how does delete() work?

Light Poster
20Mar2007,10:29   #1
tom_ge's Avatar
delete() in C take a void pointer as an argument.How does it know how many bytes of memory to delete ? Can anyone help me out ?

Thanks in advance
Go4Expert Founder
20Mar2007,13:11   #2
shabbir's Avatar
One word answer is magic and the more detail answer is it stores the amount allocated when allocating. It depends on the compiler used and as far as I remember MS VC stores before the memory chunk. Dont quote me on this as I dont have the VC installed on this PC.
Light Poster
21Mar2007,11:28   #3
tom_ge's Avatar
Thanks shabbir,

So am i right in saying
if i allocate a character pointer with 100 bytes of memory..in reality there is 100 bytes + 4 bytes(initial block for pointer to know how many bytes internally allocated to the pointer) allocated, but these 4 bytes are not acccessible by the user and is only for compiler to know how many bytes to delete.
Team Leader
21Mar2007,12:10   #4
DaWei's Avatar
There are more than 4 bytes of overhead, but you're getting the picture. You can google for malloc implementations if you want the precise details for your particular implementation. The delete function is actually a C++ thing, not a C thing. New and delete are wrappers for the C-type malloc (and family) and free operations.
Light Poster
21Mar2007,12:38   #5
tom_ge's Avatar
Thanks Dawei