다음을 통해 공유


free

메모리 블록을 할당 해제하거나 해제합니다.

구문

void free(
   void *memblock
);

매개 변수

memblock
해제할 이전에 할당된 메모리 블록입니다.

설명

free 함수는 calloc, malloc 또는 realloc를 호출하여 이전에 할당된 메모리 블록(memblock)을 할당 해제합니다. 해제된 바이트 수는 블록이 할당되거나 다시 할당될 때 요청된 realloc바이트 수와 같습니다. 이 NULL경우 memblock 포인터가 무시되고 free 즉시 반환됩니다. 잘못된 포인터(또는 할당되지 않은 메모리 블록에 callocmallocrealloc대한 포인터)를 해제하려고 하면 후속 할당 요청에 영향을 미치고 오류가 발생할 수 있습니다.

메모리 해제 중 오류가 발생하면 운영 체제에서 제공하는 실패 특성에 대한 정보를 바탕으로 errno가 설정됩니다. 자세한 내용은 다음을 참조하세요.errno, _doserrno, _sys_errlist_sys_nerr.

메모리 블록이 해제 _heapmin 된 후 사용되지 않는 영역을 병합하고 운영 체제로 다시 해제하여 힙의 사용 가능한 메모리 양을 최소화합니다. 운영 체제에 릴리스되지 않은 해제된 메모리는 사용 가능한 풀로 복원되고 다시 할당할 수 있습니다.

애플리케이션이 C 런타임 라이브러리 free 의 디버그 버전과 연결되면 .로 확인 _free_dbg됩니다. 디버깅 프로세스 중에 힙을 관리하는 방법에 대한 자세한 내용은 CRT 디버그 힙을 참조하세요.

free__declspec(noalias)로 표시되면 함수는 전역 변수를 수정하지 않도록 보장되지 않습니다. 자세한 내용은 noalias를 참조하세요.

할당된 메모리를 _malloca해제하려면 .를 사용합니다 _freea.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.

요구 사항

함수 필수 헤더
free <stdlib.h><malloc.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

예시

malloc에 대한 예를 참조하세요.

참고 항목

메모리 할당
_alloca
calloc
malloc
realloc
_free_dbg
_heapmin
_freea