[C언어]strlen() 함수를 호출하면 시스템이 죽는 경우 발생

2024년 03월 30일 by 진아사랑해

    [C언어]strlen() 함수를 호출하면 시스템이 죽는 경우 발생 목차
반응형

strlen() 함수는 NULL 포인터를 검사하지 않습니다.

NULL 포인터인 경우에 리턴할 값이 없기 때문입니다.

라이브러리 내부에서 검사하지 않음으로 C언어로 프로그램을 작성하는 사람이 검사를 해야 합니다

 

#include <stdio.h>
#include <string.h>   <- strlen() 함수를 포함하는 라이브러리

int main()
{
    char *str;  <- 지정된 문자열이 없음으로 NULL이 들어가 있음

    int length;
    if(str == NULL) length = 0;
    else length = strlen(str);
    printf("str = %s length = %d\n", str, length);
}

 

출력된 내용은 

str = (null) length = 0

 

이렇게 포인터의 NULL 검사를 하여야 죽는 경우를 방지할 수 있습니다.

 

 참고 사이트

https://stackoverflow.com/questions/5796103/strlen-not-checking-for-null/5796686#5796686

반응형