Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: C++
Expertise: Beginner
Oct 2, 2000



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Static Memory or Heap?

When I creating a class, I declare several large arrays, and some integers within one of of class function members. Within main, I call new, making the object declared on the heap. Are the arrays and interges also delcared on the heap?

It depends on how you declared these variables inside the member function. If they are local automatic, i.e., stack allocated, they are still allocated on the stack, regardless of the object's storage type. For example:

class C
 void func();
void C::func()
 int ar[100]; // always on the stack

C * pc = new C; // ar allocated on the stack

On the other hand, if you allocate these variables using new, they are always allocated on the heap, even if you object is allocated on the stack:

void C::func()
 int *p new int[100]; // always on the heap

C ac; // p allocated on the heap

In other words, it doesn't matter how you allocate your object; what matters is how you create the variables within the member function.

DevX Pro
Thanks for your registration, follow us on our social networks to keep up-to-date