문제

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);를 다음으로 변경 라코 디스

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top