how does delete() work?

tom_ge's Avatar
Light Poster
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
0
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
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.
0
tom_ge's Avatar
Light Poster
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.
0
DaWei's Avatar, Join Date: Dec 2006
Team Leader
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.
0
tom_ge's Avatar
Light Poster
Thanks Dawei