0

在 GDB 中运行这个程序,在它通过 target/replace malloc 语句之后,[1] 元素总是被赋予一个尴尬的值。

例如(使用 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'

对于另一个变量,它的值是:replace[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
}
4

2 回答 2

5

malloc只分配内存;它不保证内容是什么。如果你想用 0 初始化内存内容,试试calloc.

于 2013-02-11T03:09:27.617 回答
2

malloc不会清除内存,因此您会在分配的块中获得垃圾。您可以使用calloc自动清除内存或memset手动清除它。

于 2013-02-11T03:10:48.880 回答