//TeamSize is an integer
int Seg_id = shmget(SHM_KEY,sizeof(Word)*TeamSize,IPC_CREAT);
void* Seg_ptr = shmat(Seg_id,0,0);
new(Seg_ptr) Word[TeamSize];
이 코드 세그먼트에 문제가 있습니다. Word 클래스는 8 바이트 char 배열과 일부 구문 분석 함수로 정의한 클래스입니다. Shmget과 Shmat을 다른 사람들이 사용하는 것처럼 사용하고 있다고 생각합니다. 그러나 나는 계속 seg fault를 얻는다. Seg_id를 인쇄하면 보통 숫자로 보입니다. 그러나 Seg_ptr은 0xffffffffffffffff를 가리 킵니다. 그러면 다음 코드 행은 분명히 나에게 오류를 준다. Seg_ptr이 메모리 공간의 끝을 가리키는 이유를 알고 싶습니다. 미리 감사드립니다!포인터가 주소 공간 끝에있는 shmat 점에 의해 반환 됨 seg 오류가있는
따라서 shmat은'-1'을 반환합니다. 오류가 있음을 의미합니다. 이 경우 errno를 검사하여 오류의 원인을 판별하십시오. – Mat
팁 주셔서 감사합니다, 나는 권한이 거부되었습니다 errno = 13 있어요. 원인이 무엇일까요? 클래스의 멤버 함수에서이 코드를 실행하고 있습니다. 이런 종류의 오류가 발생합니까? – Flmhdfj
'Seg_id'가 "good"인지 확인하고 싶을 수도 있습니다. 이것이'-1'이라면,'shmat'에서 좋은 에러를 얻지 못할 것으로 기대합니다. –