共享内存使用结构体指针core

pigcoffee 2014-04-07 02:33:22
代码如下:
结构体定义如下:
typedef struct
{
int ctrlRunShmNum;
CreCtrlRun crectrlrun[1024*1024];
int ctrlTypeNum;
CreCtrlType cretrltype[MAXCRECTRLTYPENUM];
RegionMeasure regionMeasure[MAXALARMREGIONNUM];
}CreCtrlRunShm;
CreCtrlRunShm * publicGetCtrlTypeShm()
{
int shmid;
key_t shmkey;
CreCtrlRunShm *shmp;

DEBUGLOG(CLIENT_LOG, "publicGetCtrlTypeShm begin\n");

/* 获得共享内存的ID号 */
if((shmkey = getCtrlRunShmKey()) < 0)
{
errLog(" getCtrlRunShmKey err!%s%d [%d|%d|%s]\n", __FILE__, __LINE__, shmkey, errno, strerror(errno));
return NULL;
}
DEBUGLOG(CLIENT_LOG, "publicGetCtrlTypeShm 11[%d]\n", shmkey);

/* 获取共享内存 */
/*update by wangzhia 2014/3/26 11:15:23*/
if((shmid = shmget(shmkey, sizeof(CreCtrlRunShm), IPC_CREAT|0666)) < 0)
{
errLog(" shmget err!%s%d [%d|%d|%s]\n", __FILE__, __LINE__, shmid, errno, strerror(errno));
return NULL;
}
DEBUGLOG(CLIENT_LOG,"publicGetCtrlTypeShm 22[%d]\n",shmid);

/* 连接共享内存 */
shmp = NULL;
// shmp = (CreCtrlRunShm *)shmat(shmid, (CreCtrlRunShm *)0, 0);
shmp = (CreCtrlRunShm *)shmat(shmid, NULL, 0);
if((int)shmp == -1)
{
errLog(" shmat err22!%s%d [%d|%s]\n", __FILE__, __LINE__, errno, strerror(errno));
return NULL;
}
printf("get shmp===[%x]\n",shmp);

/*printAlarmType(CLIENT_LOG, "66666", shmp, '0'); */
DEBUGLOG(CLIENT_LOG, "publicGetCtrlTypeShm end\n");
printf("%d\n",shmp->ctrlRunShmNum);
return (CreCtrlRunShm *)shmp;
}

红色字体部门在函数执行时异常core掉,高手帮忙分析下吧.
...全文
182 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧