[C] memcpy와 memmove의 차이
·
C & C++
memcpy와 memmove 두 함수는 모두 특정 메모리를 다른 메모리로 복사할 때 사용된다. 그렇다면 두 함수의 차이는 뭘까? memcpy void *memcpy(void *dest, void *src, size_t size); dest(destination) : 복사되는 메모리의 주소 src(source) : 복사하는 메모리의 주소 size : 복사할 크기 return : 성공시 dest, 실패시 NULL memmove void *memmove(void *dest, void *src, size_t size); dest(destination) : 복사되는 메모리의 주소 src(source) : 복사하는 메모리의 주소 size : 복사할 크기 return : 성공시 dest, 실패시 NULL 위와 같이 ..
[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 in Linux] Makefile
·
C & C++/C in Linux
Makefile이란? Linux상에서 반복적으로 발생하는 컴파일을 쉽게하기위해서 사용하는 make프로그램의 설정 파일. Makefile을 통해 라이브러리 및 컴파일러 환경을 관리할 수 있다. Incremental build를 사용하기 위함. Incremental build란? 반복적인 빌드 과정에서 변경된 소스코드에 의존성(Dependency)이 있는 대상들만 추려서 다시 빌드하는 기능이다. 예를 들어, 위의 빌드 예제에서 main.c의 한 줄만 바꾸고 다시 빌드할 때, 컴파일과 링크만 수행하는 경우가 이에 해당한다. Makefile의 기본 구조 파일명 : Makefile Makefile은 Target(대상), 의존 관계(Dependency), 명령(Recipe/Command)의 세가지로 아루어진다. -..
[C] 포인터, strcpy, strncpy
·
C & C++
포인터(pointer) 해석해보면 '무언가를 가리키는 것' 이라고 할 수 있다. 변수가 컴퓨터에 저장될 때를 그림으로 나타내면 왼쪽과 같다. 특정 주소를 갖는 메모리에 변수의 크기 만큼 할당된다. 크기가 커져 메모리를 더 사용할 때에는 변수의 시작위치의 주소가 해당 변수의 주소가 된다. 포인터 변수는 메모리에 가리키고 싶은 주소를 담게하는 변수다. 포인터는 함수를 이용할 때 진가를 발휘한다. 함수에서 매개변수는 인자를 전달할 때 복사해서 사용한다. 즉, 원래 변수는 다른 함수에 매개변수로 주어져도 수정할 수 없다. 따라서 포인터로 메모리의 주소를 넘겨주면 다른 함수에서도 메모리에 직접적으로 참조할 수 있게된다. strcpy과 strncpy로 예를 들어보자. strcpy 헤더파일의 함수로, string c..
[C in Linux] start C
·
C & C++/C in Linux
개발환경 : WSL(Window Subsystem for Linux), Mac OS 에디터 : Vim(Vi Mproved) 컴파일러 : gcc (GNU Compiler Collection) 참조 : https://www.joinc.co.kr/w/Site/C/Documents/CprogramingForLinuxEnv/Ch3_StartC C 프로그램의 구조 프로그램은 하나 이상의 함수로 이루어진다. 반드시 하나의 main함수를 포함해야 한다. 함수는 서로 독립적인 관계에 있다. 함수(Function) 입력 데이터 +--\ /--------------+ | | | | +-----------/ \-----+ 출력결과 위의 이미지는 함수의 개념을 전형적으로 설명해주고 있다. 이미 초등학교때 소개된 개념이다. 함수..
[C in Linux] Linux 와 C
·
C & C++/C in Linux
1. Linux 와 C 최초에 C는 시스템프로그래밍을 위한 언어로 개발되었으며, 상업적 및 학습적인 용도로 성공한 최초의 운영체제라 할 수 있는 Unix운영체제를 만드는 데에 사용되었다. 한마디로 Unix와 C는 뗄레야 뗄 수 없는 관계인 것이다. 이견이 있을 수 있지만 운영체제의 선조격인 Unix를 이해하는 것은 컴퓨팅환경을 이해하는 가장 좋은 방법이며, Unix를 이해하는 가장 좋은 방법은 C를 이해하는 것이라 할 수 있다. Linux운영체제가 Unix와 전혀 다른 운영체제라고는 하지만 Unix의 모든 철학과 구현을 그대로 포함하고 있으며, 사실상 또다른 Unix운영체제의 한 종류라고 할 수 있다. Unix의 또다른 운영체제라는데 거부감을 가진 리눅서들도 있겠지만 프로그래머의 입장에서 보자면 Linu..
WONILLISM
'C언어' 태그의 글 목록 (2 Page)