int *Ptr = (int*)10;
이 문장이 의미하는 바는 Ptr은 주소 10을 가르킨다는 거죠?
즉, printf("%d",*Ptr); 했을 경우, 10번지에 있는 데이터가 어떤 데이터인지 모르니까 에러가 나는거죠?
정확한 오류 메시지를 읽어봐야합니다만 아마 그정도로 낮은 주소라면 특정방법으로 보호받고 있을겁니다 그래서 오류가 날겁니다
윗분의 설명을 좀 더 덧붙이면
운영체제가 프로세스에게 메모리를 할당해주는데, 이 할당해준 메모리를 벗어난 영역을 "읽기/쓰기" 시도하면 운영체제 차원에서 막아 버립니다. 보통 주소값이 낮은 부분은 운영체제 자신이 쓰기 위한 용도로 마련해놓기 때문에 일반 프로세스의 접근을 막습니다.
아주 단순한 MCU 등이 들어간 임베디드 시스템에서는 해당 코드가 제대로 동작할 겁니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
정확한 오류 메시지를 읽어봐야합니다만 아마 그정도로
정확한 오류 메시지를 읽어봐야합니다만 아마 그정도로 낮은 주소라면 특정방법으로 보호받고 있을겁니다 그래서 오류가 날겁니다
윗분의 설명을 좀 더 덧붙이면
윗분의 설명을 좀 더 덧붙이면
운영체제가 프로세스에게 메모리를 할당해주는데, 이 할당해준 메모리를 벗어난 영역을 "읽기/쓰기" 시도하면
운영체제 차원에서 막아 버립니다. 보통 주소값이 낮은 부분은 운영체제 자신이 쓰기 위한 용도로 마련해놓기 때문에 일반 프로세스의 접근을 막습니다.
아주 단순한 MCU 등이 들어간 임베디드 시스템에서는 해당 코드가 제대로 동작할 겁니다.
댓글 달기