Ошибка доступа к памяти при работе со структурами - C (СИ)
Формулировка задачи:
Задача состоит следующая создать динамический массив.
Т.е кол-во элементов в строках может быть разной.
Я решил немного по тренироваться и создал 2 структуры:
1) Столбец, который указывает на строчку
2)Строка
Почему-то при попытке присвоить появляется ошибка доступа к памяти... В чем может быть проблема?
#pragma hdrstop #pragma argsused #include <stdio.h> #include <malloc.h> #ifdef _WIN32 #include <tchar.h> #else typedef char _TCHAR; #define _tmain main #endif struct Matrix{ int n; struct Line *l; }; struct Line{ int m; int *num; }; int _tmain(int argc, _TCHAR* argv[]) { struct Matrix M; M.n=5; M.l=malloc(M.n*sizeof(struct Line)); M.l[0].m=5; M.l[0].num=(M.l[0].m*sizeof(int)); M.l[0].num[0]=10; }
Решение задачи: «Ошибка доступа к памяти при работе со структурами»
textual
Листинг программы
M.l=(struct Line *)malloc(M.n*sizeof(struct Line));
Объяснение кода листинга программы
- В данном коде используется оператор
=
для присваивания значения переменнойM.l
. - Значение переменной
M.l
получается с помощью функцииmalloc
, которая выделяет память для нового блока памяти. - В качестве аргумента функции
malloc
используется выражениеM.n*sizeof(struct Line)
, которое вычисляет размер памяти, необходимый для храненияM.n
структур типаstruct Line
. - Значение переменной
M.n
представляет собой количество структур, которые будут выделены в массиве. - Переменная
M.l
будет содержать указатель на начало блока памяти, выделенного с помощью функцииmalloc
. - После выполнения данного кода, переменная
M.l
будет указывать на начало массива структурstruct Line
, выделенных в памяти.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д