char *带记忆泄漏
Char * w/ Memory Leak
我有一个问题,可以识别导致程序中的内存泄漏的原因。以下是我正在运行的代码:
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 [],通常需要使用新的char*来声明您的char*。看起来只是一个简单的错误。
我是C 的新手
char **input=new char*[999];
相关文章:
- valgrind-hellgrind与泄漏检查的结果不同
- 从构造函数抛出异常时如何克服内存泄漏
- malloc() 可能出现内存泄漏
- 松弛原子与无同步情况下的记忆连贯性
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 尽管遵循了规则,内存泄漏在哪里
- 为什么调用堆栈数组会导致内存泄漏
- 递归函数有效,但无法记忆
- 在简单示例中,Python3 + ctypes 回调会导致内存泄漏
- 使用模板类的自定义列表类型中的内存泄漏
- 为什么以下C++代码中存在内存泄漏?
- CPP 中的瓦尔格林德和记忆泄漏:"Conditional jump or move depends on uninitialised values"
- 记忆博士:这些台词真的是导致内存泄漏的原因吗?
- C :当居民记忆缓慢增加时,是否存在内存泄漏
- 记忆泄漏与列表C
- 瓦尔格林德:我的记忆泄漏在哪里
- char *带记忆泄漏
- 我的记忆泄漏在哪里
- 做记忆时内存泄漏
- 神秘的记忆泄漏C++