【发布时间】:2017-08-29 20:41:32
【问题描述】:
我在使用 malloc 和 getchar 读取用户的赞时遇到了一些问题。我得到了结果,但是,我使用 valgrind 得到了内存泄漏。我对此一无所知,并询问了我的同学和导师,但似乎没有人知道原因。
char *ReadLineFile(FILE *infile){
int i=0;
char c;
char *newStringLine;
newStringLine = (char *) malloc(sizeof(char));
while( (c = fgetc(infile)) != '\n' ){
newStringLine[i++] = c;
realloc(newStringLine, (sizeof(char) * (i+1)));
}
newStringLine[i] = '\0';
return newStringLine;
}
Valgrind 给了我几个错误,包括 Invalid write/read of 1 和 invalid realloc。
【问题讨论】:
-
回复得很快!我尝试不投射它,但是,我不断收到相同的泄漏和错误。
-
你应该使用
realloc的返回值。你扔掉它。 -
@ricknaght 完全忽略有关强制返回 malloc 的参考。有一个不知道怎么写代码的低素质程序员的回答。
标签: c pointers dynamic-memory-allocation realloc