Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的共享内存+;崩溃_C++_Posix_Shared Memory - Fatal编程技术网

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*,所以它有点意义。但我不相信它会返回相同的值——当然不是在所有平台上。