안녕하세요. c++, c의 크기를 지정하지 않은 배열에 관해 궁금한 점이 있습니다.
글쓴이: ozon1000 / 작성시간: 목, 2017/02/09 - 9:01오후
저는 임베디드 시스템에 관심이 있고 공부중에 있습니다.
제가 궁금한 것은 아주 간단한 코드를 보여드리고 말씀드리겠습니다.
코드는 다음과 같습니다.
char result[] = {};
다음과 같이 선언하고 result[0], 혹은 그 임의의 index에 데이터를 넣는 작업이 가능한것을 알았습니다.
제 생각에는 당연히 컴파일 오류가 생길 것 이라고 생각했는데 정상적인 빌드가 되었습니다.
이렇게 사용해도 문제가 없는 것인가요?
읽어주셔서 감사합니다.
Forums:
printf("%d", sizeof(result));
printf("%d", sizeof(result));
해보니 0 나옵니다.
절대 거기에 쓰지 마세요.
http://ideone.com/0dVAXI
ubuntu 16.04 환경입니다. gcc를 사용하고요 버전은 아마
ubuntu 16.04 환경입니다. gcc를 사용하고요 버전은 아마 4.9 대를 사용했던걸로...
그런데 왜 정상적으로 작동할까요...? 의문입니다.
예를들어서..
저 상태에서
result[0] = 1;
printf("%d", result[0]);
이 가능한 이유가요...
C는 배열의 범위를 체크하지 않기 때문에,
C는 배열의 범위를 체크하지 않기 때문에,
배열의 범위를 벗어난 곳에 쓰기가 가능합니다.
그러나, 그것이 다른 영역의 메모리를 침범하는 결과를 낳습니다.
피해야할(하지 말아야 할) 동작입니다.
답변 감사합니다.
점점더...
속이 채워지는 느낌입니다.
감사드립니다.
댓글 달기