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** ? Заранее спасибо за помощь


Ответы (0 шт):