0
shmget
함수를 사용하여 일부 데이터를 저장하기 위해 공유 메모리를 사용하고 있습니다. 그런 다음 shmat
을 사용하여 첨부하고 데이터를 저장합니다. 다음 번에 내가 그것을 첨부, 프로그램이 충돌합니다. 이 줄의 가능성은 무엇입니까?C++ 충돌시 공유 메모리
if((smemPtr = (int*)shmat(sMemId,NULL,0)) != (int *) -1)
충돌이 발생합니까? 이 선이 충돌하는 시나리오를 알아야합니다. sMemId
에는 값이 있습니다.
왜 디버그 빌드를 빌드하고 gdb에서 살펴보아야합니까? – Nim
충돌을 일으키는 라인이 확실합니까? – nos
@elmo shmat()은 실패 할 때 (void *) - 1을 반환하므로 결과가 int *로 형변환되기 때문에 여기에 의미가 있습니다. 물론 실제로 모든 플랫폼에서 동일한 값을 반환 할 것이라고 확신하지는 않습니다. –