我試圖使用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