日期:2014-05-16  浏览次数:20641 次

共享内存段错误,就几行代码
int main(int argc,char **argv)
{
  int shm_id;
  char *p_map;
  shm_id=shmget(IPC_PRIVATE,1024*5,IPC_CREAT);
  if(shm_id<0)
  {
  perror("shmget error");
  return;
  }
  p_map=(char *)shmat(shm_id,NULL,0);//映射内存
  if (p_map==NULL)
  {
  perror("shmget error");
  return;
  }  
  *p_map='a';// 此句出现段错误,上面不是分配了内存了吗
   
  if(shmdt(p_map)<0)
  perror("detach error");  
  return 0;
}
第一次用共享内存,各位指教下

------解决方案--------------------
是不是缺少权限
试试
shm_id=shmget(IPC_PRIVATE,1024*5,IPC_CREAT|0666);