포인터의 사용법의 구문과 의미는 C 표준 문서(http://bit.ly/173cDxJ)에 매우 자세히 설명되어 있다. 그러나 표준 문서가 포인터의 동작을 명확히 정의하지 못하는 경우가 있다. 이러 떄 표준 문서는 포인터의 동작을 다음과 같이 정의한다.
- 구현 방법에 따라 정의된 행동(Implementation-defined behavior)
동작에 대한 문서화된 구현을 제공한다. 구현 방법에 따라 정의된 행동의 예로, 정수에 대한 오른쪽 시피트 연산에서 상위 비트의 확장 방법이 있다.
- 명시되지 않은 행동(Unspecified behavior)
동작에 대한 구현을 제공하지만 문서화하지 않는다. malloc함수에 인자로 0을 주고, 실핼할 때 메모리가 얼마나 할당되는가 하는 것이 명시되지 않은 행동의 예가 될 수 있다. 명시되지 않은 행동의 목록을 CERT Secure Coding Appendix DD에서 볼 수 있다.
- 정의되지 않은 행동(Undefined behavior)
포인터의 동작에 대해 어떠한 것도 강요하지 않으므로 어떠한 동작도 발생할 수 있다. 이 경우의 예로, free 함수에 의해 해제된 포인터의 값이 있다. (C 표준은 해제된 포인터에 어떤 값이 들어 있는지 정의하지 않는다.) 정의되지 않은 행동의 목록은 CERT Secure Coding Appendix CC(http://bit.ly/16msOVK)에서 찾을 수 있다.
'컴퓨터 프로그래밍' 카테고리의 다른 글
ADC 모듈을 이용해서 측정한 광전압에 따라 반응하기 소스 코드 (HBE-MCU-All in One) (0) | 2014.02.15 |
---|---|
EEPROM을 이용한 비밀번호 시스템 만들기 소스 코드 공개 (HBE-MCU-All in One) (0) | 2014.02.15 |
댕글링 포인터(Dangling Pointer) (8) | 2014.02.12 |
realloc 함수의 동작 원리에 대한 자세한 설명 (0) | 2014.02.12 |
Xcode로 Hello World 출력해보기 [Objective-C] (0) | 2013.12.18 |