Программа крашится при освобождении памяти - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет.
#include <stdlib.h>
#include <limits.h>
 
void main(void) {
    int qtyMAX = 2;
    char ***string = malloc(qtyMAX * sizeof *string);
    for (int i = 0; i < qtyMAX; ++i) {
        string[i] = malloc(3 * sizeof **string);
        for (int j = 0; j < 3; ++j)
            string[i][j] = malloc(UCHAR_MAX * sizeof ***string);
    }
 
    int qty = 0;
    string[qty][0] = "00..";            string[qty][1] = "01...";       string[qty++][2] = "02....";
    string[qty][0] = "10...";           string[qty][1] = "11..";        string[qty++][2] = "12..";
 
    for (int i = 0; i < qtyMAX; ++i) {
        for (int j = 0; j < 3; ++j) {
            free(string[i][j]);
        }
        free(string[i]);
    }
    free(string);
}
Хочу подгрузить слова. У каждого слова - 3 вариации. Реализовал через динамический массив. Этот кусок компилируется, запускается. Слова подгружаются нормально. Но при высвобождении памяти крашится на первом free();
Чет не соображу что не так. На int тоже самое работает. Подскажите, пожалуйста, в чем ошибка?

Решение задачи: «Программа крашится при освобождении памяти»

textual
Листинг программы
string[qty][0] = "00..";

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.3 из 5
Похожие ответы