代码看起来像这个
void otherfunc(char* str) {
str = malloc(128);
// Initialize str to something
}
void mainfunc() {
char* foo = NULL;
otherfunc(foo);
free(foo);
}
理想情况下,foo
应该被释放,对吧?我不知道为什么会泄漏。此外,如果我将free()
移动到otherfunc
,它不会泄漏。
您按值传递指针,malloc返回的指针在退出函数时丢失,对代码的更正应该是
void otherfunc(char** str) {
*str = malloc(128);
// Initialize str to something
}
void mainfunc() {
char* foo = NULL;
otherfunc(&foo);
free(foo);
}