코드는 이렇습니다.
#include <stdio.h> void main() { char *tmp; scanf("%s", tmp); printf("%s", tmp); }
간단한 위 소스를 XP에서 Visual C++ 6.0으로 컴파일 하여 실행할 경우 오류가 납니다. 하지만 같은 코드를 unix에서 gcc로 컴파일 할 경우엔 제대로 실행이 되는데 도데체 왜 그런지 알수가 없군요.
어떻게 오류가 나나요?
--feanor
tmp는 포인터일 뿐이므로
입력값을 저장할려면 메모리를 할당해 주어야 합니다.
가장 간단한 방법은 tmp를 배열로 정의하시는 것.
tmp[100] 정도로 해보세요.
제대로 실행이 될 리가 없을텐데요. :) 윗 분 말씀대로 메모리 할당이 안되었으므로 컴파일은 될 지 몰라도 실행하면 Segmentation Fault 가 날 겁니다.
컴파일러 차이려거니.. 생각하시고여.
정석대로 메모리 할당한후에 프로그래밍 하는게 좋을듯 하네요.
그리고, 위에 코드가 리눅스에서는 세그먼트폴트만 나오지 않을뿐이지, 정상적으로 작동하지는 않네요.
☆
어떻게 오류가 나나요?--feanor
어떻게 오류가 나나요?
--feanor
메모리 할당
tmp는 포인터일 뿐이므로
입력값을 저장할려면 메모리를 할당해 주어야 합니다.
가장 간단한 방법은 tmp를 배열로 정의하시는 것.
tmp[100] 정도로 해보세요.
제대로 실행이 될 리가 없을텐데요. :) 윗 분 말씀대로 메모리 할당이
제대로 실행이 될 리가 없을텐데요. :) 윗 분 말씀대로 메모리 할당이 안되었으므로
컴파일은 될 지 몰라도 실행하면 Segmentation Fault 가 날 겁니다.
성의없는 답변..
컴파일러 차이려거니.. 생각하시고여.
정석대로 메모리 할당한후에 프로그래밍 하는게 좋을듯 하네요.
그리고, 위에 코드가 리눅스에서는 세그먼트폴트만 나오지 않을뿐이지, 정상적으로 작동하지는 않네요.
☆