我已将内存泄漏隔离到这些行:
char* word_ptr;
while(read_word(fp, word)) {
word_ptr = strdup(to_lower_case(word));
// other stuff happens, loop closes properly, etc.
因为我不喜欢malloc word_ptr,所以我不需要释放它。如果你需要小写函数,它就在这里:
char* to_lower_case(char *string) {
for (int i = 0; i < strlen(string); i++) {
string[i] = tolower(string[i]);
}
return string;
}
答案 0 :(得分:5)
因为我不是malloc word_ptr ...
但是strdup()
使用malloc()
分配内存,所以它们都是一样的。
来自man 3 strdup
:
使用
malloc(3)
获取新字符串的内存,可以使用free(3)
释放。
答案 1 :(得分:0)
strdup
为您执行malloc
- 请参阅http://linux.die.net/man/3/strdup