Задача:
1) Разместить в шаред мемори структуру. (X)
2) Разместить в шаред мемори массив структур. (Y[5])
Первое нормально сделал.
Второе неполучается
Вот такой код:
Цитата:
#include <stdio.h>
#include <sys/shm.h>
struct _x
{
unsigned char test0;
unsigned char test1;
};
struct _y
{
unsigned char test0;
unsigned char test1;
};
struct _x *x;
int x_size=sizeof(struct _x);
struct _y **y;
int y_size=sizeof(struct _y)*5;
int main()
{
int id_x;
int id_y;
id_x = shmget(0001000, x_size, IPC_CREAT);
if (id_x == -1)
{
printf("Error (id_x)\n");
exit(1);
}
x = (struct _x *) shmat (id_x, NULL, SHM_RND);
if ((int)(x) == -1)
{
printf("Error (x)\n");
exit(1);
}
id_y = shmget(0002000, y_size, IPC_CREAT);
if (id_y == -1)
{
printf("Error (id_y)\n");
exit(1);
}
y = (struct _y **) shmat (id_y, NULL, SHM_RND);
if ((int)(y) == -1)
{
printf("Error (y)\n");
exit(1);
}
printf("____1____\n");
x->test0=100;
printf("____2____\n");
y[3]->test1=200;
printf("____3____\n");
return(0);
}
На экране:
____1____
____1____
segmentation fault
Как я понимаю, я либо неправильно записываю в массив структур, либо неправильно его объявил....
Компилятор ошибок и предупреждений не выдаёт...
Собственно вопрос - где ошибка?
Как правльно объявить в шаред мемори массив структур?
Подробные объяснения в природе косяка очень приветствуются.
Ответ на:
комментарий
от dilmah
Ответ на:
комментарий
от Dead
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Использовать семафоры для взаимного исключения (2018)
- Форум Семафоры, не правильное отображение строки , язык си (2012)
- Форум Проблема с connect (2006)
- Форум rtnetlink уведомить пользователя (2016)
- Форум [СИ] структуры, массивы и sizeof(). (2010)
- Форум Программа на Си падает, при выделении памяти (2014)
- Форум nfqueue вытащить данные пакете (2012)
- Форум Помогите разобраться с sendto (2014)
- Форум Динамическое распределение памяти (2014)
- Форум Проблема с 64 битами (2006)