char* str = (char*)malloc(0);
gets(str);
puts(str);
에서 아무리 긴 문자열을 입력해도 에러없이 동작하는 이유가 뭐야?
니가멍청해서
문자열 포인터라서 그런가?
int main(){ char str[100]; gets(str); while(1); return 0; } 하면 왜 길게 입력해도 에러 없이 동작함?
clas // 알아서 끊어서 화면에 출력해주지영
에러 없이 동작하는게 아니라 에러 검출을 못하는 거야.
저런거 냅두면 옆에 있는 소스나 데이터를 덮어버리는 경우가 있는데, 이런 버그는 한달에 한번 1년에 한번 이런식으로 튀어나오는 경우가 많아서, 디버깅 난이도 헬이다 -_-;;
근데 프로세스가 os로부터 할당받는 메모리를 넘어서면 segmentation fault 뜨면서 다운되지 않아?? 근데 어떻게 다른 프로세스의 코드나 데이터를 덮을 수 있어??
에러나는데 멍청아
니가멍청해서
문자열 포인터라서 그런가?
int main(){ char str[100]; gets(str); while(1); return 0; } 하면 왜 길게 입력해도 에러 없이 동작함?
clas // 알아서 끊어서 화면에 출력해주지영
에러 없이 동작하는게 아니라 에러 검출을 못하는 거야.
저런거 냅두면 옆에 있는 소스나 데이터를 덮어버리는 경우가 있는데, 이런 버그는 한달에 한번 1년에 한번 이런식으로 튀어나오는 경우가 많아서, 디버깅 난이도 헬이다 -_-;;
근데 프로세스가 os로부터 할당받는 메모리를 넘어서면 segmentation fault 뜨면서 다운되지 않아?? 근데 어떻게 다른 프로세스의 코드나 데이터를 덮을 수 있어??
에러나는데 멍청아