C++ 또는 C에서 포인터가 메모리 경계를 벗어나는 값으로 설정되면 어떻게됩니까? 다음과 같은 코드가 있습니다.포인터가 너무 크면 어떻게됩니까?
int* ptr = 0;
while (true) {
ptr += 1; // eventually this will go out of bounds of the memory ... unless there is an overflow.
*ptr = 10; // just give it a value, why not?
}
어떻게 될까요? 포인터가 범위를 벗어나면 16 바이트 메모리를 가정 해 봅시다 - 단지 0xF에서 0x0로 전환하는 것입니까? 카운트 업을 계속하고 컴퓨터가 *ptr = 10;
회선과 충돌합니까?
나는 바보가 아니기 때문에 노력하고 있지만 매우 궁금합니다.
'시도하기에 어리석지는 않지만 매우 궁금합니다. '- 그냥 시도해보십시오. 이것은 적절한 대답을 대체하지는 않지만, 주요 OS에서 실행중인 경우 응용 프로그램 외부에서 아무런 해를 끼치 지 않을 것입니다. – Thebluefish
예, 포인터는 단순한 값 컨테이너가 아닙니다. 단지 뒤집을 것입니다. 반면 몸의 두 번째 라인은 100 % UB 기회를가집니다. –
정의되지 않은 동작 ahoy – user975989