Имеет ли код ниже утечку памяти. Я подозреваю, что это не так, но инструменты, которые я использую для их обнаружения (Visual Studio + Parasoft C++ test), ничего не мешают. Если это так, я могу это исправить?Имеет ли это утечку памяти?
//A dynamically allocated array of char pointers
int numOfStrings = 10, numOfChars = 32;
char** data = new char*[numOfStrings];
//Generate each each individual string
for(int i = 0; i <numOfStrings; i++)
data[i] = new char[numOfChars];
//moves the elements 1-5 in the array to the right by one
int index = 1, boundary = 5, sizeToMove = (boundary - index) * sizeof(numOfChars);
memmove(&data[index + 1],&data[index],sizeToMove);
delete[] data;
EDIT:
Я должен упомянуть, я попытался итерация каждой отдельной строки, как показано ниже, но происходит исключение.
for(int i = 0; i< numOfStrings; i++)
delete [] data [i];
@NuclearGhost: Нет, не следует. Этот вопрос касается определения и исправления конкретной проблемы в части кода. Обзор кода предназначен для тех случаев, когда у вас есть фрагмент кода, для которого вы хотите, чтобы предложения улучшались в любой области. –
Не используйте 'new'; Лучше использовать 'std :: vector', или в случае' char ',' std :: string'. –