У меня есть код, который содержит динамический массив строк. У меня возникают проблемы с освобождением каждой отдельной строки, которая сгенерирована. Я предположил, что могу просто включить новый цикл, который освободил их, но это не сработало. Как я должен это делать?Исключение во время удаления [] после memmove
//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);
for(int i=0;i < numOfStrings; i++)
delete [] data[i]; //this line is causing an exception on its first call (I've also tried delete data[i].
delete[] data;
Было бы намного проще использовать инструменты C++. 'std :: vector data (numOfStrings);' –
вы перемещаете память своего массива, вы не хотите брать адреса данных, а указатель указал на данные. также проверьте свой размер (numOfChars), потому что он эквивалентен sizeof (int), вы уверены, что хотите этого? –