代码如下:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
int *p = new int[2];
p[0] = 1;
p[1] = 2;
cout << *p++ << endl;
delete p;
return 0;
}
可以编译,但是得到一个运行时错误“free(): invalid pointer”,后面是一个内存映射。
操作系统 ubuntu 10.10
编译器:g++ 4.4.3
最佳答案
需要调用数组版本的delete
:
delete[] p;
编辑:但是,您真正的问题是您正在递增p
。
delete
运算符仅适用于分配的原始指针。
关于c++ - 一段C++代码得到 "invalid pointer"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12232859/