Internal C++ pointer/array management
Hi there! When I was coding some things, a question came up.
How does C++ remember the size of an array located on the heap?
Like this:
int* pInts = new int[100];
Then I want to delete them with
delete [] pInts;
Okay, in this example, the compiler might easily "remember" how many ints to delete since "100" is a constant, but what if it''s a variable like:
int sz = 100;
int* pInts = new int[sz];
delete [] pInts;
Does the compiler generate a size variable somewhere to remember how many ints I''ve allocated or what?
----------------------------------------------
Petter Nordlander
"There are only 10 kinds of people in the world. The who understand binary and those who don''t"
It might, or it might not. The C++ standard just dictates that it should work, not precisely how it is implemented.
I can''t see any way it should work if it does not. But I thought there might be one..
----------------------------------------------
Petter Nordlander
"There are only 10 kinds of people in the world. The who understand binary and those who don''t"
----------------------------------------------
Petter Nordlander
"There are only 10 kinds of people in the world. The who understand binary and those who don''t"
quote:Original post by PhiberOptic
Does the compiler generate a size variable somewhere to remember how many ints I''ve allocated or what?
It has to. However, it does this automatically only for convenience.
Same type of automation works in arrays of any type.
The compiler stores automatically the size of one element.
C++ FAQ Lite [16.13] After p = new Fred[n], how does the compiler know there are n objects to be destructed during delete[] p?
[How To Ask Questions|STL Programmer''s Guide|Bjarne FAQ|C++ FAQ Lite|C++ Reference|MSDN]
[How To Ask Questions|STL Programmer''s Guide|Bjarne FAQ|C++ FAQ Lite|C++ Reference|MSDN]
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement