我创建了一个名为 substring 的函数并按以下方式使用它:-
char* substring(char* source, int startIndex, int endIndex)
{
int size = endIndex - startIndex + 1;
char* s = new char[size+1];
strncpy(s, source + startIndex, size);
s[size] = '\0';
return s;
}
char *game1 = new char[10]
char* a0 = substring(csv, 0, x[0]);
game1 = a0;
//delete[] a0;
delete[] game1;
但是,通过 Valgrind 检查后,它导致了一些内存泄漏。当我删除a0时,程序不起作用。我该如何处理这个问题?谢谢。
我进行了编辑:-
char* game1 = substring(csv, 0, x[0]);
delete[] game1;
最佳答案
问题就在眼前
char *game1 = new char[10]
您已将 char[10] 分配给了从未删除的 game1。
尝试添加
删除[]游戏1;
之前
game1 = a0;
实际上你不需要将 char[10] 分配给 game1 我不知道你为什么这样做。删除它也可能有效。 只是声明为
char *game1;
关于c++ - 消除 C++ 中的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61947783/