作者VictorTom (鬼翼&娃娃魚)
看板C_and_CPP
標題Re: [問題] 指標陣列的問題
時間Wed Mar 10 18:11:19 2010
※ 引述《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