当前位置: 技术问答>linux和unix
unix64位机获得共享内存出错!
来源: 互联网 发布时间:2015-11-02
本文导语: 程序如下: #include "pubfunc.h" main() { S_MEMRECORD_T sMemRecoed[150]; S_MEMRECORD_T *psMemRecoed; int shmid; key_t key; key=20051112; shmid = shmget(key,sizeof(sMemRecoed),IPC_CREAT|0666); if(shmid == -1) { printf("创建共享...
程序如下:
#include "pubfunc.h"
main()
{
S_MEMRECORD_T sMemRecoed[150];
S_MEMRECORD_T *psMemRecoed;
int shmid;
key_t key;
key=20051112;
shmid = shmget(key,sizeof(sMemRecoed),IPC_CREAT|0666);
if(shmid == -1)
{
printf("创建共享内存失败n");
return -1;
}
(S_MEMRECORD_T *)psMemRecoed =(S_MEMRECORD_T *) shmat(shmid, 0, 0);
memset((S_MEMRECORD_T*)psMemRecoed, 0,sizeof(sMemRecoed));
}
用cc -c test.c
cc -o test test.o
编译没有问题。
用cc -c test.c -q64
cc -o test test.o -q64
编译后出错Segmentation fault (core dumped)。
请问怎么回事?
#include "pubfunc.h"
main()
{
S_MEMRECORD_T sMemRecoed[150];
S_MEMRECORD_T *psMemRecoed;
int shmid;
key_t key;
key=20051112;
shmid = shmget(key,sizeof(sMemRecoed),IPC_CREAT|0666);
if(shmid == -1)
{
printf("创建共享内存失败n");
return -1;
}
(S_MEMRECORD_T *)psMemRecoed =(S_MEMRECORD_T *) shmat(shmid, 0, 0);
memset((S_MEMRECORD_T*)psMemRecoed, 0,sizeof(sMemRecoed));
}
用cc -c test.c
cc -o test test.o
编译没有问题。
用cc -c test.c -q64
cc -o test test.o -q64
编译后出错Segmentation fault (core dumped)。
请问怎么回事?
|
你打印一下psMemRecoed的值看看,可能是0xffff之类的开头吧。应该是你没有include shmat所在的头文件造成的。