在C中,free()
用于释放内存,比如free(ptr)
。据我所知,在库代码中的ptr之前分配额外的内存来存储块大小信息。在调用free()
之后,整个块会被跟踪并释放。C++中的逻辑删除和删除[]
在C++中,有两种形式的new和delete。一个是数组。如果使用new[]
,则应使用delete[]
。例如,
int ptr = new [10];
delete [] ptr;
问题1:我可以在这里使用delete ptr
吗?如果那是好的,如果delete ptr + 2
?
问题2:如果delete[]
必须用于匹配new[]
,为什么我们需要两种形式的删除?只需要一个表格,例如delete
就足够了。
感谢您的所有建议!
感谢Mgetz。问题2应该是:为什么C++标准在任何情况下都建议删除[]并删除如果只有一个正确格式?
打开你的想法http://www.parashift.com/c++-faq/freestore-mgmt.html – lsalamon
这是C++的尘土飞扬的角落之一。避免新的[]和删除[]像瘟疫。 – epx