Ошибка доступа к памяти при работе со структурами - C (СИ)

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

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

Задача состоит следующая создать динамический массив. Т.е кол-во элементов в строках может быть разной. Я решил немного по тренироваться и создал 2 структуры: 1) Столбец, который указывает на строчку 2)Строка Почему-то при попытке присвоить появляется ошибка доступа к памяти... В чем может быть проблема?
Листинг программы
  1. #pragma hdrstop
  2. #pragma argsused
  3. #include <stdio.h>
  4. #include <malloc.h>
  5. #ifdef _WIN32
  6. #include <tchar.h>
  7. #else
  8. typedef char _TCHAR;
  9. #define _tmain main
  10. #endif
  11. struct Matrix{
  12. int n;
  13. struct Line *l;
  14. };
  15. struct Line{
  16. int m;
  17. int *num;
  18. };
  19.  
  20. int _tmain(int argc, _TCHAR* argv[])
  21. {
  22. struct Matrix M;
  23. M.n=5;
  24. M.l=malloc(M.n*sizeof(struct Line));
  25. M.l[0].m=5;
  26. M.l[0].num=(M.l[0].m*sizeof(int));
  27. M.l[0].num[0]=10;
  28. }

Решение задачи: «Ошибка доступа к памяти при работе со структурами»

textual
Листинг программы
  1. M.l=(struct Line *)malloc(M.n*sizeof(struct Line));

Объяснение кода листинга программы

  1. В данном коде используется оператор = для присваивания значения переменной M.l.
  2. Значение переменной M.l получается с помощью функции malloc, которая выделяет память для нового блока памяти.
  3. В качестве аргумента функции malloc используется выражение M.n*sizeof(struct Line), которое вычисляет размер памяти, необходимый для хранения M.n структур типа struct Line.
  4. Значение переменной M.n представляет собой количество структур, которые будут выделены в массиве.
  5. Переменная M.l будет содержать указатель на начало блока памяти, выделенного с помощью функции malloc.
  6. После выполнения данного кода, переменная M.l будет указывать на начало массива структур struct Line, выделенных в памяти.

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


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

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

8   голосов , оценка 3.75 из 5

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

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

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