|
밑에 분이 말씀하신데로
int *pi = 97; 은 컴파일 타임 경고입니다.(Nonportable pointer conversion)
int *pi = (int *)97은 아니지만요...(근데 이게 무슨 의미지...???)
바로 실행(Ctrl+F9) 하시기전에 컴파일(Alt+F9) 해보시는게 좋습니다.
런타임 에러 방지의 한 방법이 아닐런지요...
실행되는걸 보면 컴파일러의 융통성이라고 해야하는건지 모르겠지만...
저도 첨에 설마하고 노가다(100번...ㅠ.ㅠ)했습니다.
저는 BC++3.1에서 했는데 정말로
"Borland C++ - Copyright 1991 Borland Intl. Null pointer assignment
Divide error
Abnormal program termaination"
이 찍히더군여...
머리 터지도록 고민해봤습니다.
그치만 답이 안나옵니다...
혹시 볼랜드에서 컴파일 만든 개발자들이 만든 "이스트 에그"가 아닐까 하는 생각까지... 미처...
왜냐면 밑에 소스는 컴파일에러도 없고 링크에러도 없고 실행도 되는데
똑같이 찍히니 말입니다...
그냥 해본말이구요
char *ip = (char *)4;
이게 무슨 의미인지 파악하면 답이 나올거 같습니다...만 머리가 터질꺼 같아서리...
노가다 안하고 확인하는법을 올립니다.
설마 하시는분 돌려보세요...
#include <stdio.h>
#include <conio.h>
void main(void)
{
int i;
char *ip = (char *)4;
clrscr();
for (i=0; i<113; i++)
{
getch(); // 귀찮으신분은 getch()를 주석처리하세요(하지만 극적효과를 위해^^)
printf("%c", *(ip++));
}
getch();
}
실행시키고 아무키나 113번만 눌러주세요^^
그리고 아스키코드는 ROM-BIOS에 저장되어 있다고 합니다.
어디서 봤었는지 기억이 안나지만 찾으면 자세히 말씀드리죠...
그리고 혹시 메모리 97번지에 어떤 값이 들어있는지 궁금하신거라면
간단하게 도스창에서 debug로 메모리를 덤프해보세여...
|