C++. Динамические массивы
Столкнулся со следующей проблемой: при удалении динамического массива char* (да, я знаю про string и vector, char* - ТЗ нашей мутной лабы), возникает ошибка, будто бы удаляется память вне буфера.
У меня есть структура:
struct Sentences
{
char* words[MaxWords]; //массив указателей на слова в предл.
int CntWords;
char*& operator[](int index); //перегрузка оператора индексации
Sentences(); //КОНСТРУКТОР
};
мне нужно отсортировать слова в предложении через функцию:
void bubblesort_sent(Sentences sent, bool order = true)
{
bool run = true;
int i;
int count = 0;
int len = sent.CntWords;
while (run)
{
run = false;
for (i = 0; i < len - 1; i++)
{
if (cmp_words(sent[i], sent[i + 1], order))
{
char* temp = new char[findlen(sent.words[i])];
// findlen(char*) - выводит длину
strcpy(temp, sent.words[i]);
strcpy(sent.words[i], sent.words[i + 1]);
strcpy(sent.words[i + 1], temp);
delete[] temp; // здесь возникает ошибка
run = true;
}
}
count++;
if (count > 1000)
{
cout << "Зацикливание bubblesort_sent.\n";
exit(EXIT_FAILURE);
}
}
}
Причем, в sent.words слова разной длины. При попытке отсортировать Sentence - возникает ошибка: после строки
delete[] temp
выдает
В чем заключается моя ошибка и каким образом лучше менять местами строки в массиве char** ? Заранее спасибо за помощь
