공유 메모리 Segv
-
28-10-2019 - |
문제
Boost를 사용하려고 시도했고 크기가 24 인 개체를 3000 번 할당 한 후 segv를 사용했습니다. 이제 sys / ipc.h 및 sys / shm.h를 사용하기 시작했습니다. 25mio 바이트를 할당합니다 (이를 제대로 이해하면)
내 리눅스 박스에서도 제대로 작동하는 것 같습니다. ipcs -m 할당 된 세그먼트가 표시됩니다. 라코 디스
sysctl -p가 인쇄됩니다 라코 디스
어떤 이유로 프로그램이 "43406 x 24 bytes"에 도달 할 때까지 작동합니다.내 문제가 어디에 있는지 힌트를 얻을 수있어 기쁩니다.이것이 객체와 공유 메모리를 할당하고 사용하는 잘못된 방법 인 경우에도 유의하십시오. 라코 디스
해결책
(p_sharedMemory + (sizeof(x) * i))->setTest(i);
여기서 sizeof(x)
를 사용하는 이유는 무엇입니까?x를 가리키는 포인터에 하나를 추가하면 다음 바이트가 아닌 다음 x를 가리 킵니다.이것이 당신의 문제라고 생각합니다.
(p_sharedMemory + (sizeof(x) * i))->setTest(i);
를 다음으로 변경
라코 디스
제휴하지 않습니다 StackOverflow