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
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.
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.
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.