看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
VictorTom:補推個建議, 建議您把array/pointer的操作多看看/練習, 03/10 18:14
VictorTom:原來的code幾乎都在'\0'踩過array邊界, 對於malloc回來 03/10 18:15
VictorTom:的pointer也沒保存, 這在free或之後的access會出問題:) 03/10 18:15
needFresh:真的太謝謝你給的建議了 感謝你這一個小時來的指導 03/10 18:16
※ 編輯: VictorTom 來自: 220.134.41.4 (03/10 18:25)
loveme00835:V大都很熱心~ 03/10 22:54
VictorTom:這種狀況就表示, 小弟我自己的工作卡到中....Orz XD 03/10 23:22