消除C ++中的内存泄漏

按键_24_7

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章