Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[1642] Re:정말 이상하네요...답변좀
laSuna [] 1211 읽음    2002-11-27 18:11
선언때문에 그런건데요..
정확히 어디에서 부터 어디까지인지는 모르지만
C컴파일러를 구현하면서 컴파일러에 따라 구현이 달라지는 경우가 있거든요
님의 문제도 그런 부분이구요.
문제가 되는 부분은
char *m1 = "Korea";
이 부분입니다.
포인터가 korea를 가르키고 있는 상황인데  "korea"라고 사용자가
메모리 할당을 하지 않고 사용할 경우 write 금지가 되어있어서 에러가 나는 거죠
왜 그런지는 모르구요.
어떤 컴파일러에서는 되고 어떤 컴파일러에서는 안 된다는 건
정확히 정해진 룰이 없다는 이야기 같네요.
포인터의 증가나 포인터와 연산자의 계산 결과 등의 문제에서
간혹 컴파일러에 따라 결과가 달라지는 경우를 본 것 같습니다.

참 글구 에러없이 돌리시려면
char m1[6] = "kOrea"; 라든가
char *m1 = malloc(...)와 같이 하면 되요.

차이점은 첫 줄은 배열로 메모리를 잡아준거고
두번째는 malloc으로 메모리를 잡아준거죠.

타입체크가 심한 VC++에서 사용자의 실수를 줄이기 위해서 그렇게 한건지
어떤건지 그 이유는 저두 궁금하네요^^
그럼 수고하세요

+ -

관련 글 리스트
1636 정말 이상하네요...답변좀 김종현 1374 2002/11/27
1642     Re:정말 이상하네요...답변좀 laSuna 1211 2002/11/27
1660         Re:Re:감사합니다.~~!! 김종현 1290 2002/11/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.