c++ - 一段C++代码得到 "invalid pointer"错误

标签 c++ delete-operator

代码如下:

#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/

相关文章:

c++ - 如果类具有引用成员,为什么合成的复制赋值运算符被定义为已删除?

c++ - 数组中相邻元素的最大差和

c++ - 在从放置 new 获得的指针上使用 operator delete 的合法性

c++ - delete[] 是否适用于通用数组?如果是这样,为什么在其上使用 std::vector::erase 会导致释放内存时出错

c - 新建和删除运算符(operator)?

c++ - 删除单向链表中特定数值范围之外的节点

c++ - Set-Intersection C++ 使用文本文件

c++ - OpenCV 通过帧平均减去背景

c++ - IDL 文件 - 静态链接或动态链接

c++ - 处理连接对象时出现段错误