我已经实现了一个返回字符串的函数。它将一个整数作为参数(age
),并返回一个格式化的字符串。strdup()导致内存泄漏?
所有的工作都很好,除了我有一些疯狂的内存泄漏事实。我知道strdup()是这个原因,但我试图研究一些修补程序无济于事。
我的代码是:
const char * returnName(int age) {
char string[30];
sprintf(string, "You are %d years old", age);
return strdup(string);
}
Valgrind的输出是:
==15414== LEAK SUMMARY:
==15414== definitely lost: 6,192 bytes in 516 blocks
==15414== indirectly lost: 0 bytes in 0 blocks
==15414== possibly lost: 0 bytes in 0 blocks
==15414== still reachable: 0 bytes in 0 blocks
==15414== suppressed: 0 bytes in 0 blocks
解决此内存泄漏问题的任何帮助是极大的赞赏。
你已经证明,分配,那是哪里释放的代码的代码存储? –
提供[mcve]。 – Olaf
您是否阅读过有关'strdup'的任何文档? – juanchopanza