首页 > 解决方案 > 消除 C++ 中的内存泄漏

问题描述

我创建了一个名为 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;

标签: c++

解决方案


问题就在附近 char *game1 = new char[10] 您已将 char[10] 分配给您从未删除的 game1。

尝试添加 delete[] game1;

game1 = a0;

实际上,您不需要将该 char[10] 分配给 game1 我不知道您为什么这样做。删除它也可能有效。只是声明为

char *game1; 

推荐阅读