~ 1GB를 할당하려고하는데 포인터 주소를 확인하면 음수입니다. 이것이 내가 어딘가에 타격을 가하는 구성 제한 일 수 있습니까?C : 할당 제한
- 목표는 ~ 0.7GB의 ~ 1기가바이트
- 제한을 할당 ([구조체] 48 * 16,890) 메모리의
- 1.5GB의 메모리를
- 더 많은 양이 이전에 할당되지 않았다.
- fedora linux를 사용 중입니다.
- 에는 컴파일러 오류
~ 1GB를 할당하려고하는데 포인터 주소를 확인하면 음수입니다. 이것이 내가 어딘가에 타격을 가하는 구성 제한 일 수 있습니까?C : 할당 제한
는 무관의 포인터의 "기호"를 테스트하지 마십시오. malloc
이 반환하는 유일한 잘못된 포인터는 null 포인터입니다. 그것이 다른 것을 반환하면 그것을 사용할 수 있습니다. 내가 포인터 주소를 확인할 때
는하지만 음수 불가능
에게 있습니다. 여러분이 볼 수있는 것은 주소를 부호있는 정수로 해석하는 것입니다.
C 자체에는 제한이 없습니다. 할당은 요청 된 블록 크기 및 운영 체제의 주소 지정 기능에 사용되는 데이터 유형에 따라 제한됩니다.
요청한 크기의 연속 메모리 블록이없는 경우 런타임 중에 요청이 실패합니다 (malloc()
NULL
).
LOL, 진심이야? 포인터의 "부호"에 신경 쓰지 마십시오. 정수가 아닙니다. malloc()이 0이 아닌 값을 반환하면 작동합니다. –
나는 포인터 주소가 음수 일 수 있다는 것에 놀랐다 - 매우 특이한 하드웨어 플랫폼에 있어야한다 ;-) 물론 모든 플랫폼에서 * signed int로 변환 될 수있다. –
그래, 왜 효과가 없다고 생각하는지 확대 할 수 있니? 포인터는 부호 없음이고 malloc이 실패하면 NULL을 리턴합니다. – DanTheMan