다음을 통해 공유


_freea

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

구문

void _freea(
   void *memblock
);

매개 변수

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

반환 값

없음.

설명

이 함수는 _freea 이전에 호출에 의해 할당된 메모리 블록(memblock)의 할당을 취소합니다 _malloca. _freea는 힙 또는 스택에서 메모리가 할당되었는지 확인합니다. 스택에서 할당된 경우 _freea는 아무 작업도 수행하지 않습니다. 힙에서 할당된 경우 해제된 바이트 수는 블록이 할당될 때 요청된 바이트 수와 일치합니다. 이 NULL경우 memblock 포인터가 무시되고 _freea 즉시 반환됩니다. 잘못된 포인터(할당 _malloca되지 않은 메모리 블록에 대한 포인터)를 해제하려고 하면 후속 할당 요청에 영향을 미치고 오류가 발생할 수 있습니다.

_freea 는 메모리가 힙에 할당된 것으로 확인되면 내부적으로 호출 free 됩니다. 메모리가 힙 또는 스택에 있는지 여부는 할당된 메모리 바로 앞 주소의 메모리에 배치된 표식에 의해 결정됩니다.

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

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

_freea를 호출하면 _malloca에 대한 모든 호출이 함께 수행됩니다. 동일한 메모리에서 두 번 호출 _freea 하는 것도 오류입니다. 애플리케이션이 C 런타임 라이브러리의 디버그 버전과 연결된 경우, 특히 _malloc_dbg 정의 _CRTDBG_MAP_ALLOC하여 사용하도록 설정된 기능을 사용하면 누락되거나 중복된 호출을 쉽게 찾을 수 있습니다 _freea. 디버깅 프로세스 중에 힙을 관리하는 방법에 대한 자세한 내용은 CRT 디버그 힙을 참조하세요.

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

요구 사항

함수 필수 헤더
_freea <stdlib.h> 및 <malloc.h>

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

예시

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

참고 항목

메모리 할당
_malloca
calloc
malloc
_malloc_dbg
realloc
_free_dbg
_heapmin