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。
尝试添加
delete[] game1;
前
game1 = a0;
实际上,您不需要将该 char[10] 分配给 game1 我不知道您为什么这样做。删除它也可能有效。只是声明为
char *game1;
推荐阅读
- mysql - MySQL上出现此错误1241的原因可能是什么
- javascript - 这里地图自动缩放以适合所有标记
- javascript - 嵌套 App.post 和 App.get,好做法还是坏主意?
- pine-script - tradingview:Pine 无法确定系列的参考长度。尝试使用 max_bars_back
- c++ - std::set 用于双精度值的自定义比较函数。插入()不起作用
- mongodb - 无法将数据从我的独立实例导入 MongoDB atlas 集群
- powershell - Powershell:在一个属性上获取唯一性,同时对两个属性进行排序
- amazon-web-services - AWS EC2 上的 Gitlab Runner 自动缩放 - 无法生成实例
- sql - 如何在 GROUP BY 语句中排除唯一属性
- istio - Istio URI 与 Rewrite 匹配