Friday 15 December 2017

c++ - How does delete work?

itemprop="text">











How
does delete know how many bytes it has to free?


I read that there is some block before the actual pointer address
that is returned by new which contains block address details.



Anyone here who knows how many bytes this block
has or how the format of that block is?


class="post-text" itemprop="text">
class="normal">Answer



In
general, this is implementation-dependent.



The
way this is usually implemented is that new/malloc will allocate slightly more bytes
than you asked for, and will use the extra bytes for some book-keeping: many times the
allocated blocks will also be maintained in a linked-list, and so the extra bytes will
be used to store the next/prev pointer, as well as the size of the
block.



This is not mandatory, however. The
new/malloc calls can just as well store your pointer and the block's size in, say, a
map.




If you're interested in a
specific implementation, you will have to provide more information (e.g. what
runtime/compiler are you using?).


No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...