코드는 이렇습니다.
#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 가 날 겁니다.
컴파일러 차이려거니.. 생각하시고여.
정석대로 메모리 할당한후에 프로그래밍 하는게 좋을듯 하네요.
그리고, 위에 코드가 리눅스에서는 세그먼트폴트만 나오지 않을뿐이지, 정상적으로 작동하지는 않네요.
☆
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
어떻게 오류가 나나요?--feanor
어떻게 오류가 나나요?
--feanor
메모리 할당
tmp는 포인터일 뿐이므로
입력값을 저장할려면 메모리를 할당해 주어야 합니다.
가장 간단한 방법은 tmp를 배열로 정의하시는 것.
tmp[100] 정도로 해보세요.
제대로 실행이 될 리가 없을텐데요. :) 윗 분 말씀대로 메모리 할당이
제대로 실행이 될 리가 없을텐데요. :) 윗 분 말씀대로 메모리 할당이 안되었으므로
컴파일은 될 지 몰라도 실행하면 Segmentation Fault 가 날 겁니다.
성의없는 답변..
컴파일러 차이려거니.. 생각하시고여.
정석대로 메모리 할당한후에 프로그래밍 하는게 좋을듯 하네요.
그리고, 위에 코드가 리눅스에서는 세그먼트폴트만 나오지 않을뿐이지, 정상적으로 작동하지는 않네요.
☆
댓글 달기