gpt4 book ai didi

c++ - 无法在以下代码中发现内存泄漏问题

转载 作者:搜寻专家 更新时间:2023-10-31 01:39:44 24 4
gpt4 key购买 nike

我是 C++ 的新手。我的 C++ 代码面临内存泄漏问题。请查看下面提到的导致问题的代码。

void a()
{
char buffer[10000];
char error_msg[10000];
char log_file[FILENAME_L] = "error_log.xml";

FILE *f;
f = fopen(log_file,"r");
while (fgets(buffer, 1000, f) != NULL)
{
if (strstr(buffer, " Description: ") != NULL)
{
strcpy(error_msg, buffer);
}
}
fclose(f);
actual_error_msg = trimwhitespace(error_msg);
}

任何人都可以对此提出建议。我是否需要使用 malloc 而不是硬编码数组大小?

最佳答案

如果变量 actual_error_msg 是全局变量并且函数 trimwhitespace 没有为 error_msg 的拷贝动态分配内存,则似乎存在未定义的行为

actual_error_msg = trimwhitespace(error_msg);

因此当函数完成时,其执行指针 actual_error_msg 将无效。

Can anyone please suggest on this

我建议在函数 trimwhitespace 中为 error_msg 的拷贝动态分配内存。或者如果你已经自己做了然后检查内存是否被及时释放。:)

考虑到 buffer 声明的大小等于 10000 看起来很奇怪,而在 fgets 中使用了魔数(Magic Number)1000.

char buffer[10000];
//,,,
while (fgets(buffer, 1000, f) != NULL)

关于c++ - 无法在以下代码中发现内存泄漏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30758804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com