2013-02-11 107 views
0

在GDB中執行此程序,並且在它通過目標/替換malloc語句後,[1]元素總是給出一個尷尬的值。在使用malloc時出現問題

例如(使用GDB):

(gdb) p target[0] 

$1 = -48 '\320' 

(gdb) p target[1] 

$2 = 101 'e' 

(gdb) p target[2] 

$3 = -4 '\374' 

(gdb) p target[3] 

$4 = -73 '\267' 

對於其他變量,它的值是:取代[1] = 'd'

爲什麼這樣做呢?如果我遺漏了其他重要信息,請讓我知道。

void replace(char** list, int wordLine, int targetAmount) 
{ 
    char** final; 
    char* target; 
    char* replace; 
    int wCounter, cCounter, i, hashCounter = 0, addLetter = 0; 
    int copyWord, countChars, numOfWords, finalWords = 0; 

    target = (char*)malloc(targetAmount); //allocating memory for 
    replace = (char*)malloc(targetAmount); //these char*'s 
    // other stuff here 
} 
+0

您不需要在c程序中投射malloc的返回值。 – 2013-02-11 03:16:51

回答

5

malloc只分配內存;它不會保證內容是什麼。如果要用0初始化存儲器內容,請嘗試calloc

+0

好吧,非常感謝。 – juice 2013-02-11 03:37:27

2

malloc不清除內存,所以你得到垃圾在你分配的塊。您可以使用calloc自動清除內存或memset手動清除它。