다음 코드 사례에 해당하는 코딩 오류로 가장 적절한 것은?char* f… | [경찰간부후보생 소프트웨어공학] 23년 1회차 기출문제 상세 페이지
1[경찰간부후보생 소프트웨어공학] 23년 1회차
다음 코드 사례에 해당하는 코딩 오류로 가장 적절한 것은?
| char* f(int n) { char *op; if (n > 0) op = (char*) malloc(size); if (n == 1) return NULL; return(op); } |
1
NULL의 사용
2
버퍼 오버플로(Overflow)
3
중복된 프리(Free) 선언
4
메모리 누수(Leak)
해설
해당 코드의 오류는 메모리 누수이다.
n이 1이면 n > 0 조건으로 malloc이 먼저 실행되어 메모리가 할당되지만 곧바로 NULL을 반환하므로, 할당된 주소를 잃어 해제할 방법이 없는 메모리가 남는다.
- NULL의 사용 오류는 NULL 포인터를 역참조하는 경우를 말하는데, 이 코드는 NULL을 반환할 뿐 역참조하지 않는다.
- 버퍼 오버플로는 할당 크기를 넘어 쓰는 경우인데, 이 코드에는 버퍼에 쓰는 동작이 없다.
- 중복된 프리는 같은 메모리를 두 번 해제하는 오류인데, 이 코드에는 free 호출 자체가 없다.
오류나 개정된 내용이 보이면 알려주세요