【发布时间】:2023-03-28 04:49:01
【问题描述】:
我有一个创建字符串的函数。这是一个简单的例子:
char* getString() {
char *buffer = (char*)malloc(20 * sizeof(char));
snprintf(buffer, 20, "Some stupid text");
return buffer;
}
这里是主要功能:
int main() {
printf("%s\n", getString());
return 0;
}
这段代码中是否发生了内存泄漏(因为 Valgrind 没有警告任何内存泄漏)?如果是的话,如何在不使用主函数中的新变量的情况下避免这种情况?
谢谢
【问题讨论】:
-
是的,您有内存泄漏。如果您不想将指针分配给传递给
free的变量,则没有办法避免它。 -
是的,你应该把它放到
printf之前的一个变量中,然后是free它 -
只要使用 valgrind 就可以了。
标签: c memory memory-leaks