|
gets의 용법이 가물가물 하긴 합니다만..
문제가 있는 코드로 보입니다.
아래 코드에선 char* str은 포인터만 선언되어 있을 뿐 사실상 메모리 공간이
할당되어 있지 않습니다.
에러가 나지 않는 이유는 메모리 어딘가의 공간에 겹쳐쓰기가 진행되고
있기 때문입니다.
그 겹쳐쓰는 공간이 사용되지 않는 공간이라면.. 문제가 없이 넘어가지만..
그렇지 않은 경우는 당연히 실행중에 에러가 발생하게됩니다.
C/C++에선 이런 경우는 프로그래머의 잘못입니다.
김진우 님이 쓰신 글 :
: 볼랜드는 VC++에 비해서 특히 getch()함수부분에서 에러가 많이 나는거 같습니다.
:
: #include <stdio.h>
: #include <conio.h>
:
: void main() {
: char a;
: char* str;
:
: printf("%s\n", "문자를 입력하십시요...");
: gets(str);
: a = getch();
: printf("\n%s\n", "여기에서 부터가 출력의 시작입니다.");
: printf("gets()에서 사용자가 입력한 문자열 : %s\n",str);
: printf("getch()에서 사용자가 입력한 문자 : %c\n",a);
: getch();
: return 0;
: }
: 위의 코드는 문자를 입력받아서 출력하는 간단한 겁니다. 이거말고 학교에서 짯던 코드에서 getch()부분에서 메모리 관련 에러가 나길래 시험삼아서 c언어 기초책에 있던 소스를 가따가 시험해보니까 역시 메모리 에러가 뜨더군요. 터보씨나 VC++은 에러 안뜨던데
: getch()함수부분에서 왠 메모리에러가 이렇게 많은가요?
:
|