Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
1

Ошибка доступа к памяти при работе со структурами

22.02.2015, 01:25. Просмотров 1100. Ответов 3
Метки нет (Все метки)

Задача состоит следующая создать динамический массив.
Т.е кол-во элементов в строках может быть разной.
Я решил немного по тренироваться и создал 2 структуры:
1) Столбец, который указывает на строчку
2)Строка
Почему-то при попытке присвоить появляется ошибка доступа к памяти... В чем может быть проблема?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#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;
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.02.2015, 01:25
Ответы с готовыми решениями:

Ошибка доступа к памяти при работе с потоками
проблема в следующем в оконном приложении( среда разработки C++ Builder XE3) создаю при нажатии...

Ошибка при работе со структурами
#include &lt;stdio.h&gt; #include &lt;windows.h&gt; char name1; int age1; char nickname1; char...

Ошибка при работе со структурами
#include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; typedef struct slist_ { long...

Ошибка при работе со структурами
Вот код. Выдает вот такую вот ошибку &quot;Необработанное исключение по адресу 0x012A58A1 в...

3
146 / 116 / 37
Регистрация: 27.10.2011
Сообщений: 690
22.02.2015, 01:48 2
Лучший ответ Сообщение было отмечено iluxa1810 как решение

Решение

iluxa1810, ты в строчке
C
1
M.l[0].num=(M.l[0].m*sizeof(int));
видимо malloc хотел написать, да забыл .
Это первое, а второе - указатели, возвращаемое функциями динамического выделения памяти, следует приводить к нужным типам, т.е. в твоём случае не
C
1
M.l=malloc(M.n*sizeof(struct Line));
, а
C
1
M.l=(struct Line *)malloc(M.n*sizeof(struct Line));
В третьих, значения возвращаемые этими же функциями, следует проверять на NULL
1
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
22.02.2015, 02:17  [ТС] 3
Nikitko_Cent,
Спасибо, работает.
Цитата Сообщение от Nikitko_Cent Посмотреть сообщение
а второе - указатели, возвращаемое функциями динамического выделения памяти, следует приводить к нужным типам, т.е. в твоём случае не
Код C
1
M.l=malloc(M.n*sizeof(struct Line));
, а
Код C
1
M.l=(struct Line *)malloc(M.n*sizeof(struct Line));
А Си разве не приводит неявно к нужному типу?
0
146 / 116 / 37
Регистрация: 27.10.2011
Сообщений: 690
22.02.2015, 02:19 4
Лучший ответ Сообщение было отмечено iluxa1810 как решение

Решение

iluxa1810, по мне, так лучше явно показать приведение
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2015, 02:19

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка преобразования типов при работе со структурами
Здравствуйте. Подскажите, пожалуйста, почему не меня среда ругается. error C2440: =: невозможно...

Ошибка при работе со структурами: Expression must be a modifiable lvalue
Здравтсвуйте, не могу найти ошибку в коде: #define _CRT_SECURE_NO_WARNINGS #include &lt;math.h&gt;...

Ошибка при работе со структурами: error LNK2019: ссылка на неразрешенный внешний символ _main
#include&lt;iostream&gt; using namespace std; struct baza_film { char name_film ; char...

Ошибка доступа при работе с Mutex
Как решить эту ошибку?! void CheckRepeatRun() { HANDLE hMutex = CreateMutex( NULL, 0,...

Ошибка доступа при работе с изображениями в DrawGrid
//при нажатии на кнопку в 1 ячейке 1 столбце должно появляться изображение, но выдает ошибку...

Ошибка "Выражение должно представлять собой указатель на полный тип" при работе со структурами
Возникает проблема при передаче структурных переменных в ф-цию Например: void showdatabase(struct...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.