gpt4 book ai didi

c++ - Char * w/内存泄漏

转载 作者:太空狗 更新时间:2023-10-29 21:18:27 24 4
gpt4 key购买 nike

我无法确定导致程序内存泄漏的原因。下面是我正在运行的代码:

char *input[999];
//exec commands
for(unsigned int i = 0; i < commands.size(); i++)
{
string current = "";
string word = "";
int k = 0;
for(unsigned int j = 0; j < commands.at(i).size(); j++) //iterate through letters
{
current = commands.at(i);
//cout << "current: " << current << endl;
if(current[j] == ' ')
{
input[k] = new char[word.size() + 1];
strcpy(input[k], word.c_str());
k++;
word = "";
}
else
word += current[j]; //add letter
//cout << "word: " << word << endl;
}
input[k] = new char[word.size() + 1];
strcpy(input[k], word.c_str());
k++;

input[k] = NULL;

//...
//...

for(int z = 0; z <= k; z++)
{
delete[] input[z];
}
}

通过 valgrind 运行这段代码,我发现我的内存确实丢失了。为了尝试重新创建场景并进行调试,我在此处使用了上述代码的较小规模版本:

int main()
{
char* var[999];
string s = "1234";

var[0] = new char[4 + 1];
strcpy(var[0], s.c_str());

delete [] var[0];
return 0;
}

根据 valgrind,这段代码没有任何内存泄漏。我没有在原始代码中取消分配什么?我的测试代码在做什么而我的原始代码没有做什么?谢谢,感谢您的帮助。

最佳答案

如果稍后在代码中对它使用 delete[],通常需要用 new 声明你的 char*。看起来只是一个简单的错误。

关于c++ - Char * w/内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30202715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com