'API 및 라이브러리'에 해당되는 글 26건
NAME
SYNOPSIS
#include <string.h> void *memcpy(void *dest, const void *str, size_t n); |
DESCRIPTION
메모리 영역은 겹쳐지지 않는다. 만일 메모리 영역을 겹쳐 쓰길 원한다면 memmove(3)를 사용해라.
RETURN VALUE
CONFORMING TO
SEE ALSO
'API 및 라이브러리 > C 라이브러리 함수' 카테고리의 다른 글
getutent(3) (0) | 2009.12.17 |
---|---|
ttyname(3) (0) | 2009.04.04 |
isatty(3) (0) | 2009.04.02 |
atexit(3) (0) | 2009.04.01 |
memset(3) (0) | 2009.04.01 |
NAME
SYNOPSIS
#include <unistd.h> int isatty (int desc); |
DESCRIPTION
CONFORMING TO
SEE ALSO
'API 및 라이브러리 > C 라이브러리 함수' 카테고리의 다른 글
ttyname(3) (0) | 2009.04.04 |
---|---|
memcpy(3) (0) | 2009.04.03 |
atexit(3) (0) | 2009.04.01 |
memset(3) (0) | 2009.04.01 |
malloc(3) (0) | 2009.03.31 |
SYNOPSIS
#include <stdlib.h> int atexit(void (*function)(void)); |
DESCRIPTION
function을 동록하는 것이다. 그렇게 등록된 함수는 그것들이 등록된 반대 순서로 호출된다. 어떤 변수도 지나치지 않는다.
RETURN VALUE
errno 은 실행되지 않는다.
CONFORMING TO
SEE ALSO
'API 및 라이브러리 > C 라이브러리 함수' 카테고리의 다른 글
memcpy(3) (0) | 2009.04.03 |
---|---|
isatty(3) (0) | 2009.04.02 |
memset(3) (0) | 2009.04.01 |
malloc(3) (0) | 2009.03.31 |
strcpy(3) (0) | 2009.03.31 |
NAME
SYNOPSIS
#include <string.h> void *memset(void *s, int c, size_t n); |
DESCRIPTION
RETURN VALUE
CONFORMING TO
SEE ALSE
'API 및 라이브러리 > C 라이브러리 함수' 카테고리의 다른 글
isatty(3) (0) | 2009.04.02 |
---|---|
atexit(3) (0) | 2009.04.01 |
malloc(3) (0) | 2009.03.31 |
strcpy(3) (0) | 2009.03.31 |
getenv(3) (1) | 2009.03.30 |
NAME
calloc, malloc, free, realloc - 동적 메모리 할당 및 해제
SYNOPSYS
#include <stdlib.h> void *calloc(size_t nmemb, size_t size); void *malloc(size_t size); void free(void *ptr); void *realloc(void *ptr, size_t size); |
DESCRIPTION
calloc() 함수는 원소의 크기가 size 바이트인 nmemb 개의 원소로 이루어진 배열을 위한 메모리를 할당하고
할당된 메모리에 대한포인터를 반환한다. 메모리는 0 으로 설정된다.
malloc() 함수는 size 바이트를 할당하고 할당된 메모리에 대한 포인터를 할당한다. 메모리를 클리어하지 않는다.
free() 는 malloc(), calloc() 또는 realloc() 에 대한 호출시 반환되는 ptr 이 가리키는 메모리 공간을 해제한다.
그렇지 않고, 만일 free(ptr) 가 전에 이미 호출되었다면, 정의되지 않은 행동이 일어난다.
만일 ptr 이 NULL 이라면, 어떤 작동도 행해지지 않는다.
realloc() 함수는 ptr 이 가리키는 메모리 블럭의 크기를 size 바이트로 바꾼다.
내용은 예전의 최소 크기에서 새 크기로 바뀌지 않는다. 새롭게 할당된 메모리는 초기화되지 않는다.
만일 ptr 이 NULL 이라면, 호출은 malloc(size) 과 동일하다; 만일 크기가 0 이라면, 호출은 free(ptr) 와 동일하다.
만약 ptr 이 NULL 이 아니라면, 이 함수는 malloc(), calloc() 이나 realloc() 에 대한 초기 호출시 반환되어야 한다.
RETURN VALUE
calloc() 그리고 malloc()함수에서, 반환 값은 할당된 메모리를 가리키며, 이것은 어떤 종류의 변수를위해 적당히 정렬된다.
만일 요구가 실패하면, NULL 이반환된다.
free() 는 어떤 값도 반환하지 않는다.
realloc() 은 새로 할당된 메모리를 가리키는 포인터를 반환하며 이 메모리는 어떤 종류의변수를 위해 적당히 정렬되며 ptr과는
다를 것이다. 그렇지 않고, 만일 요구가 실패하거나 크기가 0 이라면 NULL 을 반환한다.
만일 realloc() 이 실패한다면 원래 블럭은 건드리지 않고 남아있다 -- 해제되거나 이동되지않는다.
CONFORMING TO
ANSI-C
NOTES
Unix98 표준은 실패시 errno 를 ENOMEM으로 설정하도록 malloc(), calloc(), 그리고 realloc() 을 요구한다. Glibc는 이렇게 설정된 것으로 생각된다. ( 그리고 이 루틴들의 glibc 버전은 이것을 한다); 만일 여러분이 errno를설정하지 않는 개인적인 malloc 수행을 사용한다면, 라이브러리 루틴들은 errno를가지는 것 없이 이유없이 실패할 것이다.
malloc(), free() 또는 realloc() 함수에서 크래쉬는 할당된 영역의 오버 플로우나 같은 포인터를 두번 해제 하는 것과같은
힙 오염과 항상 관련이 있다.
Linux libc (5.4.23 이후)의 최근 버전과 GNU libc (2.x) 버전은 환경 변수를 통해조정할수 있는 malloc 수행을 포함한다.
MALLOC_CHECK_ 이 설정되었다면, 특별한 (덜 효율적이지만) 행동이 행해지며, 이것은 같은 인자를 가지고 free() 를 두번 호
출하거나 단일 바이트(off-by-one 버그)의 초과 같은 간단한 에러에 대한안전을 위해 디자인되었다.
그러나 그런 에러들은 항상 보호되지는 않으며 메모리 누수가 생길 수 있다. 만일 MALLOC_CHECK_ 을 0 으로 설정하 면,
발견된 힙 오염은 무시된다; 만일 1 로 설정하면, 진단은 stderr로 출력된다; 만일 2 로 설정하면, abort() 가 즉시 호출된다. 이것
은 유용하다. 왜냐하면 크래쉬가 나중에 생길것이고문제의 원인을 찾아가는것이 매우 어려워지기 때문이다.
SEE ALSO
brk(2)
'API 및 라이브러리 > C 라이브러리 함수' 카테고리의 다른 글
atexit(3) (0) | 2009.04.01 |
---|---|
memset(3) (0) | 2009.04.01 |
strcpy(3) (0) | 2009.03.31 |
getenv(3) (1) | 2009.03.30 |
fclose(3) (0) | 2009.03.29 |
NAME
strcpy, strncpy - 문자열 복사하기.
SYNOPSIS
#include <string.h>
char *strcpy(char *dest, const char *src);
char *strncpy(char *dest, const char *src, size_t n);
DESCRIPTION
strcpy() 함수는 src(‘\0’ 문자를 포함)가 가리키는 문자열을 dest가 가리키는 배열에 복사한다.
문자열을 겹쳐지지 않으며 목적지 문자열 dest는 복사 받을 정도로충분히 커야 한다.
strncpy() 함수는 src의 n바이트만을 복사한다는 것을제외하고 비슷하다. 만일 src의 처음 n 바이트중 null이 없다면,
결과는 null-종료가 안될수 있다.
src 의 길이가 n보다작은 경우, dest 의 나머지는 null로 패드된다.
RETURN VALUE
strcpy()와 strncpy() 함수는 목적지 문자열 dest에 대한포인터를 반환한다.
BUGS
strcpy()의 목적지 문자열이 충분히 크지 않다면(즉, 프로그래머가어리석거나 게으르다면,
복사하기 전에 크기를 검사하지 않을 것이다), 어떠한 일이 발생 할 수 있다.
고정된 길이의 문자열 오버 플로우는 즐겨 쓰여지는 크래커 기술이다.
CONFORMING TO
SVID 3, POSIX, BSD 4.3, ISO 9899
SEE ALSO
bcopy(3), memccpy(3), memcpy(3), memmove(3)
'API 및 라이브러리 > C 라이브러리 함수' 카테고리의 다른 글
memset(3) (0) | 2009.04.01 |
---|---|
malloc(3) (0) | 2009.03.31 |
getenv(3) (1) | 2009.03.30 |
fclose(3) (0) | 2009.03.29 |
exit(3) (0) | 2009.03.29 |
SYNOPSIS
#include <stdlib.h> char *getenv(const char *name); |
DESCRIPTION
문자열은 name = value의 형태이다.
RETURN VALUE
CONFORMING TO
SEE ALSO
'API 및 라이브러리 > C 라이브러리 함수' 카테고리의 다른 글
malloc(3) (0) | 2009.03.31 |
---|---|
strcpy(3) (0) | 2009.03.31 |
fclose(3) (0) | 2009.03.29 |
exit(3) (0) | 2009.03.29 |
getopt(3) (0) | 2009.03.28 |
SYNOPSIS
#include <stdio.h> int fclose(FILE *fp); |
DESCRIPTION
만약 닫혀진 stream에 대해서 fclose()가 다시 한번 실행된다면 어떤일이 일어날지 알 수 없다. 세그멘테이션 오류로 종료할 수도 있고, 그렇지 않고 계속 작동할 수도 있다. 프로그래밍을 할 때는 이점에 주의해야 한다.
RETURN VALUE
성공하면 0을 리턴한다. 실패했을 경우는 EOF를 리턴하고 errno를 설정한다.
ERRORS
The fclose() function may also fail and set errno for any of the errors
specified for the routines close(2), write(2) or fflush(3).
CONFORMING TO
C89, C99.
NOTES
Note that fclose() only flushes the user space buffers provided by the C library.
To ensure that the data is physically stored on disk the kernel buffers must be
flushed too, for example, with sync(2) or fsync(2).
SEE ALSO
close(2), fcloseall(3), fflush(3), fopen(3), setbuf(3)
'API 및 라이브러리 > C 라이브러리 함수' 카테고리의 다른 글
malloc(3) (0) | 2009.03.31 |
---|---|
strcpy(3) (0) | 2009.03.31 |
getenv(3) (1) | 2009.03.30 |
exit(3) (0) | 2009.03.29 |
getopt(3) (0) | 2009.03.28 |