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

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.


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

WEBINAR:

On-Demand

Application Security Testing: An Integral Part of DevOps


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
Thanks for your registration, follow us on our social networks to keep up-to-date