.... привет, ребята, я всегда получаю сообщение «Ошибка сегментации» при запуске моего кода. что я знаю, что эта ошибка возникает, когда есть проблема с записью в файл (я думаю, что это касается разделяемой памяти), я знаю, что ошибка исходит из цикла for, я пробовал все, чтобы решить эту ошибку, но не удалось (я даже удалил цикл for и набрал только * s = 'A'). Любая помощь, пожалуйста.Неполадка записи в сегмент разделяемой памяти
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdlib.h>
main()
{
//Shared memory parameters
int shmid ;
int shmsize = 14;
key_t key = 2121;
char *shm, *s;
//Create SMS
if ((shmid = shmget (key , shmsize, 0666 | IPC_CREAT)) == -1) {
perror ("Error in Creating the SMS");
abort();
}
//Attatching the sms to the address space
if (shm = shmat(shmid , NULL , 0) == (char *)-1) { /*<<<< 23 */
perror ("Error in attatching the SMS");
abort();
}
int i ;
s = shm;
for(i = 0 ; i <= 63 ; i++)
*s++ = (char)i;
*s = NULL; /*<<<< 33 what's the problem */
}
Также я получаю предупреждение в обеих 23 и 33
вы можете добавить в ваш ответ: размер shm равен 14, а цикл - 63 байта ... – Aubin
Большое спасибо, я буду осторожен в следующий раз. –