程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c++- 小白真心提問C++ delete,為啥連最基本的也會報錯嘛

c++- 小白真心提問C++ delete,為啥連最基本的也會報錯嘛

編輯:編程解疑
小白真心提問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,真心求助

最佳回答:


因為你改變了指針,你試圖分配堆棧上的t,當然出錯

     int *p = new int;
    int t = 10;
    int *p1=p;
    p = &t;
    delete p1;
caozhy
caozhy
91program
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved