删除如何工作?

Vij*_*jay 7 c++ memory-management

可能重复:
C编程:free如何知道要释放多少?

怎么delete知道它有多少字节可以免费?我读到在new返回的实际指针地址之前有一些块,其中包含块地址详细信息.

这里的任何人都知道这个块有多少字节或者该块的格式是多少?

tel*_*win 7

通常,这取决于实现.

通常实现的方式是new/malloc将分配比你要求的更多的字节,并且将使用额外的字节进行一些簿记:多次分配的块也将保存在链表中,因此额外的字节将用于存储next/prev指针,以及块的大小.

但这不是强制性的.new/malloc调用也可以将指针和块的大小存储在地图中.

如果您对特定实现感兴趣,则必须提供更多信息(例如,您使用的是什么运行时/编译器?).