我试图使用Boost和3000分配大小为24的对象后有一个segv,现在我开始使用sys/ipc.h和sys/shm.h,我分配了25 mio字节(如果我明白这个正确)共享内存段
似乎也对我的Linux嵌入式工控机正常工作-m将显示分配的段
0x000081bc 917516 testUser 644 25000000 0
的sysctl -p将打印
kernel.shmmax = 25500000
出于某种原因,它的工作原理直到th e程序达到“43406 x 24字节”,这就是它将分割的地方。我很乐意在问题出现的地方得到一些提示。如果这是分配和使用共享内存与对象的错误方式,请注意。
#define MAXMYMEM 25000000
int sharedMemId;
x *p_sharedMemory;
x *p_other;
sharedMemId = shmget(2232, MAXMYMEM, IPC_CREAT | 0644);
if(sharedMemId >= 0){
p_sharedMemory = (x*) shmat(sharedMemId, 0 , 0);
if(p_sharedMemory != (x *)-1) {
cout << sizeof(x) << endl;
for(unsigned int i = 0 ; i < 1000000;i++){
(p_sharedMemory + (sizeof(x) * i))->setTest(i);
}
只是出于好奇,什么是'setTest'打电话?这与Boost有关吗? – 2012-02-21 21:10:45