C++ C+中的共享内存+;崩溃
使用C++ C+中的共享内存+;崩溃,c++,posix,shared-memory,C++,Posix,Shared Memory,使用shmget功能,我使用共享内存存储一些数据。然后我使用shmat附加它并保存数据。下次我附加它时,程序崩溃了。这条线有哪些可能性: if((smemPtr = (int*)shmat(sMemId,NULL,0)) != (int *) -1) 撞车?我需要知道这条线路崩溃的情况。sMemId有一个值 (int*) (...) != (int *) -1 指向另一个对象的指针是无符号值。在这段代码中,我看到C样式将有符号(负)值转换为无符号。结果取决于编译器、平台,并且在一般情况下是未
shmget
功能,我使用共享内存存储一些数据。然后我使用shmat
附加它并保存数据。下次我附加它时,程序崩溃了。这条线有哪些可能性:
if((smemPtr = (int*)shmat(sMemId,NULL,0)) != (int *) -1)
撞车?我需要知道这条线路崩溃的情况。sMemId
有一个值
(int*) (...) != (int *) -1
指向另一个对象的指针是无符号值。在这段代码中,我看到C样式将有符号(负)值转换为无符号。结果取决于编译器、平台,并且在一般情况下是未定义的。为什么不构建一个调试版本,并在gdb中查看它?您确定是这一行导致了崩溃吗?@elmo shmat()在失败时返回(void*)-1,因此因为结果在这里被转换为int*,所以它有点意义。但我不相信它会返回相同的值——当然不是在所有平台上。