sharonlyu 2016-01-31 00:05 采纳率: 100%
浏览 1517
已采纳

小白真心提问C++ delete,为啥连最基本的也会报错嘛

 #include <iostream>

using namespace std;

struct ListNode {
    int val;
    ListNode *next;
    ListNode (int x): val(x), next(NULL) {}
};

int main(int argc, char const *argv[])
{
    // ListNode n1(2);
    // ListNode dummy(0);
    // dummy.next = &n1;
    // ListNode *p = &dummy;
    // delete p;
    int *p = new int;
    int t = 10;
    p = &t;
    delete p;
    return 0;
}

如上所示,刚接触内存分配,百度了好些东西了,不明白为什么连这个最基本的分配和释放都会报错pointer being freed was not allocated,真心求助

  • 写回答

4条回答 默认 最新

  • threenewbee 2016-01-31 00:12
    关注

    因为你改变了指针,你试图分配堆栈上的t,当然出错

         int *p = new int;
        int t = 10;
        int *p1=p;
        p = &t;
        delete p1;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R