[C] (strncpy, strncat) vs (strlcpy, strlcat)
·
C & C++
strn* strl* strlcpy 함수는 strcpy 함수(src 문자를 대상버퍼(dst)에 복사)를 대상 버퍼를 오버플로우 할 수 없는 보안 버전으로 대체하기 위한 것이다. strcat에 대한 유사한 대안을 제공하는 strlcat도 있다. 버퍼 오버플로우를 방지하는 데 사용할 수 있는 표준 C함수 인 strncpy 및 strncat은 올바르게 사용하기 어렵고 느리게 만드는 결함을 가지고 있다. strlcpy 및 strlcat 은 올바른 사용법이 가능한 한 간단하도록 설계되었다. strlcpy와 strlcat은 Todd C. Miller와 Theo de Raadt에 의해 개발되었으며 OpenBSD 버전 2.4에서 처음 구현되었다. 이후에 libbsd를 통해 FreeBSD (버전 3.3부터), Solar..
[C] 포인터, strcpy, strncpy
·
C & C++
포인터(pointer) 해석해보면 '무언가를 가리키는 것' 이라고 할 수 있다. 변수가 컴퓨터에 저장될 때를 그림으로 나타내면 왼쪽과 같다. 특정 주소를 갖는 메모리에 변수의 크기 만큼 할당된다. 크기가 커져 메모리를 더 사용할 때에는 변수의 시작위치의 주소가 해당 변수의 주소가 된다. 포인터 변수는 메모리에 가리키고 싶은 주소를 담게하는 변수다. 포인터는 함수를 이용할 때 진가를 발휘한다. 함수에서 매개변수는 인자를 전달할 때 복사해서 사용한다. 즉, 원래 변수는 다른 함수에 매개변수로 주어져도 수정할 수 없다. 따라서 포인터로 메모리의 주소를 넘겨주면 다른 함수에서도 메모리에 직접적으로 참조할 수 있게된다. strcpy과 strncpy로 예를 들어보자. strcpy 헤더파일의 함수로, string c..
WONILLISM
'strncpy' 태그의 글 목록