c-在不同的函数中调用malloc时内存泄漏



代码看起来像这个

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);
}

相关内容

  • 没有找到相关文章