Question:
When I creating a class, I declare several large arrays, and some integers within one ofof 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?
Answer:
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{public: 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.