1
//TeamSize is an integer
int Seg_id = shmget(SHM_KEY,sizeof(Word)*TeamSize,IPC_CREAT);
void* Seg_ptr = shmat(Seg_id,0,0);
new(Seg_ptr) Word[TeamSize];
我在這段代碼中遇到了問題。 Word類是一個我用8字節字符數組和一些解析函數定義的類。我想我正在使用shmget和shmat就像其他人使用它們一樣。但我不斷收到seg故障。當我打印出Seg_id時,看起來正常的只是一些數字。但Seg_ptr指向0xffffffffffffffff。然後下一行代碼顯然給我seg錯誤。我想知道爲什麼Seg_ptr指向內存空間的末尾。提前致謝!由地址空間末尾的shmat指針返回的指針,它給出了seg故障
所以shmat返回'-1'。這意味着有錯誤。在這種情況下檢查errno以確定錯誤是什麼。 – Mat
感謝您的提示,我得到了errno = 13,這是權限被拒絕。可能是什麼原因? 我在我的一個類的成員函數中運行這些代碼。會導致這種錯誤嗎? – Flmhdfj
你可能想檢查一下你的Seg_id是否也是「好」的。如果這是'-1',那麼我希望你不會從'shmat'中得到一個好的錯誤。 –