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

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

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

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

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

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

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


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

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

10   голосов , оценка 4.3 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы