为什么new/delete和new[]/delete[]必须配对使用?
new和delete的内部机制这里不赘述了,戳这里《浅谈 C++ 中的 new/delete 和 new[]/delete[]》
glibc的mallc和free实现的内存分配释放简介,戳这里《malloc和free的内存到底有多大?——GNU glib库》
第一篇博客讲的很好,但是最后new、delete的为什么配对使用的解释单纯理解还不到位。这里总结并补充说明一下。
动态内存使用表
分配方式 | 删除方式 | 结果 | 结果分析 |
---|---|---|---|
new | delete | 成功 | 合法 |
new | delete[] | 失败 | 参考下文Q1 |
new[] | delete | 内嵌类型成功;自定义类型失败 | 参考下文Q2 |
new[] | delete[] | 成功 | 合法 |