Re: [問題] 指標陣列的問題

看板C_and_CPP (C/C++)作者 (鬼翼&娃娃魚)時間16年前 (2010/03/10 18:11), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串4/4 (看更多)
※ 引述《needFresh (膩了新鮮感)》之銘言: 小弟我推累了, 直接回文吧.... 1. 如果你固定會在動態要回來的char[]最後填'\0' 你就應該多幫它malloc一個char來放'\0' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 這個描述不太好, 應該說原來算出來malloc的size沒有計入'\0'的位子, 所以才會如下例, 在malloc時多加1的char以供你放入'\0'的空間. EX: line[j]=(char*)malloc (sizeof(char)*i+1); line[j][i]='\0'; 2. 你如果沒把malloc回來的pointer存起來 就不要改變它, 否則.... EX: char *buffer, *head; buffer=(char*) malloc (sizeof(char)*txtSize+1); //由上面的指令得知應分配的記憶體大小 head = buffer; ... buffer += i; ... free(head); 3. 你寫出來的那個while判斷邏輯不對 不管判斷true還是判斷false邏輯都不通 提示我推文寫過了, 你自己想一想看看@_@" 4. 可能你只是還沒寫到, 但是line[j]記得free:) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.41.4

03/10 18:14, , 1F
補推個建議, 建議您把array/pointer的操作多看看/練習,
03/10 18:14, 1F

03/10 18:15, , 2F
原來的code幾乎都在'\0'踩過array邊界, 對於malloc回來
03/10 18:15, 2F

03/10 18:15, , 3F
的pointer也沒保存, 這在free或之後的access會出問題:)
03/10 18:15, 3F

03/10 18:16, , 4F
真的太謝謝你給的建議了 感謝你這一個小時來的指導
03/10 18:16, 4F
※ 編輯: VictorTom 來自: 220.134.41.4 (03/10 18:25)

03/10 22:54, , 5F
V大都很熱心~
03/10 22:54, 5F

03/10 23:22, , 6F
這種狀況就表示, 小弟我自己的工作卡到中....Orz XD
03/10 23:22, 6F
文章代碼(AID): #1Bbt1A31 (C_and_CPP)
文章代碼(AID): #1Bbt1A31 (C_and_CPP)