본문 바로가기

프로그래밍/C/C++

C strlen 함수 사용 시 간단한 팁!!

반응형





C에서 문자열 길이를 구할 때 strlen 함수를 많이 쓰죠?


사용법과 설명 보다는


이 함수를 사용할 때 주의할점을 알아볼까 합니다.





이와 같은 경우는 메모리 릭이 발생하죠?
코드는 극단적으로 보여져서 쉽게 알아볼 수 있지만

실제 코딩을 할 때 메모리 동적 할당 및 해제 후 해당 변수를 사용해서
메모리 릭이 발생할 수 있어요.

그래서 해당 함수를 사용할 때는 변수의 널 체크를 꼭 해주셔야 됩니다.




두번째 같은 경우는 c 처음하시는분들이 자주하는 실수일겁니다.


두 변수에 대하여 strlen 함수를 써서 길이를 알아보는 코드죠?

결과는 어떻게 나올까요??


아시는분들은 아시겠지만 

p의 길이는 9

x의 길이는 0

결과가 나오죠?


이유는 간단합니다. 


strlen 함수의 내부 구조가 0x00을 문자열의 끝으로 인식하기 때문에 

위와 같은 결과가 나온겁니다.


예측할수 없는 문자열의 길이를 사용하게 될 경우

어떠한 데이터를 읽었는데 그 중간에 0x00의 데이터가 끼어있을 경우

이러한 경우에는 strlen으로 절대 멀쩡한 데이터 길이를 얻어올 수 없습니다.



예시로 보자면

test1함수 같은 경우 정상적으로 데이터를 복사 하지만

test2함수 같은 경우 길이가 0이기 때문에 데이터를 복사할 수가 없습니다.


그래서 이런 경우는

항상 데이터의 길이를 알 수 있도록 데이터와 데이터 길이 두가지를 항상 같이 넘겨줘야 합니다.


이상 strlen 함수를 사용할때 간단한 팁 또는 주의사항 이였습니다.


반응형