c++ - 消除 C++ 中的内存泄漏

标签 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;

最佳答案

问题就在眼前 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/

相关文章:

c++ - C 和 C++ 中的原始内存是什么?

C++ 忽略某些输出的 cout 重定向

java - 提取存储在 unsigned char 数组中的 RSA 公钥模数和指数

c++ - 列出 Windows 中已安装的程序

c# - 从 .Net 访问 C++ com 对象(版本信息)

c++ - 获取所有支持的屏幕分辨率

c++ - 接受非标准可构造和不可分配类型的 vector 的替换

c++ - 为什么 g++ 声明某些 valarray<double> o 有 "no matching function for call cbegin(o)"?

c# - C++ 虚拟方法未按预期调用

C++ 弹道