c++ - Char* Array Memory Leak -
i having issues de-allocating memory used in char* array. in code snippet below, creating char* array named input holds pointers single words @ time followed pointernull @ end of array. time (i believe) allocate memory in code.
char* input[999]; //exec commands for(unsigned int = 0; < 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] = new char[1]; //add null char * input[k] = null; ... later on, attempt de-allocate memory snippet of code:
for(int z = 0; z < k; z++) { delete[] input[z]; } i iterating through char* array , deleting memory allocated @ each index. without using snippet, valgrind informs me of memory leaks. using snippet, valgrind informs me of less memory leaks before. still stuck issue of memory still being definitely lost.
i unsure missing remove rest of allocated memory (or if cause of rest of memory leaks in fact somewhere else in code). appreciate , help, suggestions, , tips.
i think, problem in below case,
input[k] = new char[1]; //add null char * input[k] = null; here, without free-ing input[k], you're assigning null it. thus, previous input[k] lost.
if want input[k] hold null, (maybe sentinel value), can do
input[k] = null; no need allocate memory separately.
Comments
Post a Comment