可能重复:
C编程:free如何知道要释放多少字节?
delete
如何知道需要释放多少字节?我读到过一些在指针地址之前的块中包含了块地址细节。这里是否有人知道这个块包含多少字节或该块的格式是什么?
可能重复:
C编程:free如何知道要释放多少字节?
delete
如何知道需要释放多少字节?我读到过一些在指针地址之前的块中包含了块地址细节。这里是否有人知道这个块包含多少字节或该块的格式是什么?
new 运算符和 malloc 函数以它们自己特定的方式处理内存,所以:
如果你试图干涉 malloc 或 new 的内部工作(似乎这是你的目标),那么你正在错误地进行 ^^
这个问题没有一个单一的正确答案,因为它取决于情况。在某些情况下,编译器在编译时知道对象的大小,因此 delete 知道要释放多少字节。在内存大小在编译时未知的情况下,可能涉及到内存映射,或者像你自己建议的那样,在指针之前有一个单词,告诉分配的字节数。
我认为很多东西都是实现特定的,不能依赖于特定的方式。这个问题与 one 非常相似。
delete
运算符来获取大小(而不是通过指针获取),编译器必须能够找到所有对new
的调用以及相应的delete
调用。该指针不能逃逸并且不能被普通的delete
删除,而这个特殊的delete
也不能删除普通指针。你有哪个编译器的具体例子可以做到这一点吗? - Lindydancer