Login | Register   
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


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

Static Memory or Heap?

Question:
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?

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.

DevX Pro
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap