포인터의 사용법의 구문과 의미는 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)에서 찾을 수 있다.
'프로그래밍 언어 > C++' 카테고리의 다른 글
C 조건부 전처리기 (0) | 2023.01.03 |
---|---|
C++ 클래스 템플릿에 선언된 friend 함수를 외부에 정의하는 방법 (0) | 2023.01.03 |
C++ if/switch statement with initializer (0) | 2022.12.11 |
C++ 모듈 (Module) (0) | 2022.11.30 |
C언어로 객체지향 주 4개의 요소 (추상화,다형성,상속,캡슐화) 구현하기 (0) | 2022.11.26 |