我正在尝试分配大小为 64B 的共享内存。但是当我给出的大小超过 27 时,编译器会抛出错误。如何解决这个问题。我正在使用 gcc 编译器。我正在服务器上运行该程序。
这是我使用的代码。
shmid=(shmget(key,size,IPC_CREAT | 0666)); // size is defined as 64
我收到一条错误消息,指出内存分配失败。但对于 27 以下的尺寸,效果很好
最佳答案
不要使用 SysV 共享内存——该接口(interface)非常糟糕,并且有许多巨大的缺点(例如,对可以使用的内存量有严格的限制,如果您的应用程序必须手动清理它)崩溃)。如果您需要共享内存,请使用mmap()
。
关于c - 分配共享内存时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6353479/