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条)

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退