fgets입력관련
불꾼
질문 제목 : fgets입력관련 의문점동적할당을 하였는데 printf로 %s서식문자를 사용하여 출력하니 동적할당 메모리가 넘었는데도 그이상이 나오는이유가 궁금합니다.질문 내용 :
#include stdio.h
#include stdlib.h
void a(char **parr ,int * size);
int main(void)
{
char ch;
int size=5;
int i,j;
char * name = (char*)malloc(sizeof(char)*size);
fgets(name,8,stdin);
fputs(name,stdout);
}
위의 소스에서 제가 name이라는 포인트에 동적할당한 메모리를 저장하고 fgets를 이용해서 8을 넣었는데
제가 설정한 메모리공간은 5인데 프린트를 해보면 8까지 다나옵니다
뭐때문인가요 ? 왜 짤려서 나오지않죠 .??
-
Emily
답변감사합니다 ㅎㅎ
-
바나나맛사탕
일단 fgets(name,8,stdin); 을 실행한다음부터는 오류 입니다. 이미 오류가 발생하였지만 오류가 발생한 영역이 해당 프로그램 내부 영역이라 os 는 그걸 감지 하지못하고 그냥 넘어가지요.. os 는 해당 프로그램에 할당되지 않은 영역으로 접근을 시도할때 오류를 내지요.. 저런경우 프로그램 크기가 커지면 오류가 발생합니다. 저런곳을 노려서 해킹을 하는 방법도 있구요.. 여튼 운이 좋았다고 밖에는 .....
-
봉봉
왜그럴까요 ㅡㅡ?
-
희선
흠, 이론적으로는 님 생각하신게 맞는거같은데, 컴파일러 문제가 아닐까요; 제가 생각하기엔 컴파일러가 걸러서 받아들인듯;
-
안토니
운이 좋다?