看板 C_and_CPP 關於我們 聯絡資訊
問題(Question): struct mynode{ //some data }: int n =100; mynode **node = new mynode *[n]; //some code delete []node[n]; 我在 bcb 按鈕中動態配置一個 大小為 n 的指標, 但不知道是 delete 錯了, 還是其他錯誤 造成第一次按按鈕, 跟第二次按按鈕產生不同結果 網路上 c++ 指標教學幾乎都是 二維 [m][n] 的範例, 請問我這樣 new delete 對嗎? 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- Sent from my Android -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.9.178.200 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1432656096.A.2C3.html
dritchie: mynode *p = new mynode[n];05/27 00:18
dritchie: delete[] p;05/27 00:18
這樣不是指標陣列吧? mynode *p[100]; p[0]~p[99] 都是指標, 而我想把 *p[100] 的 100 用成變數 ※ 編輯: noodleT (39.9.178.200), 05/27/2015 00:45:26
heyboo4862: for(int I=0;I<n;I++)delete[]p[I]05/27 01:35
heyboo4862: delete[]p05/27 01:36
anyoiuo: 樓上正解,但記得初始化成NULL,delete[]前先做檢查先。05/27 10:42
我只 new 一次, 為什麼要用迴圈 delete那麼多次? ※ 編輯: noodleT (39.10.11.203), 05/27/2015 12:33:28
anyoiuo: 因為你new了100個mynode指標,正常要使用其中的mynode指標05/27 18:03
anyoiuo: 要進行記憶體配置05/27 18:04
anyoiuo: 如p[i] = new mynode[5]; <= 有new就要記得delete05/27 18:06
mynode **node = new mynode *[n]; for(int i=0;i<n;i++){ mynode[i] = null; } for(int i=0;i<n;i++){ if(node[i]) delete[]node[i]; } delete[]node; 這樣嗎? 那我的mynode struct 中如果有指標,需要在哪裡設 null呢?如果不設,他會亂指嗎? 如: struct mynode{ //some data mynode *left , *right; }: ※ 編輯: noodleT (39.10.11.203), 05/27/2015 19:11:16
anyoiuo: 最後再進行delete [] p;05/27 19:05
anyoiuo: mynode[i] = NULL // <= 沒配置記憶體就不要delete05/27 19:21
用手機發文,沒有改大寫…
anyoiuo: http://ideone.com/eK5wD005/27 19:22
※ 編輯: noodleT (39.10.11.203), 05/27/2015 19:33:05
anyoiuo: 參考看看兩種方法 05/27 19:35
anyoiuo: 補充: Method1是c++的Struct才有的寫法 05/27 19:43
anyoiuo: C: http://ideone.com/gtkVHT 05/27 19:54