可能重复:
为什么使用“新”会导致内存泄漏?
我遇到过这样的小问题
int main() {
int i = *new int;
delete &i;
return 0;
}
它编译正常,但在执行时,shell 给出以下内容:
a.out(38303) malloc: 对象 0x7fff5fbff8cc 的 *** 错误: 被释放的指针未被分配 *** 在 malloc_error_break 中设置断点进行调试 中止陷阱
尽管
int main() {
int *i = new int;
delete i;
return 0;
}
按预期正常运行。
困扰我的是,第一种情况不是使用“new”运算符来分配内存吗?为什么删除时会导致错误?
我在网上搜索了好几次,但我找不到合适的解释。谁能告诉我为什么错了?谢谢 :)