realloc

메모리 블록을 다시 할당 합니다.

void *realloc(
   void *memblock,
   size_t size 
);

매개 변수

  • memblock
    이전에 할당 된 메모리 블록에 대 한 포인터입니다.

  • size
    새 크기 (바이트)에서입니다.

반환 값

realloc반환 된 void 재할당 (및 가능한 경우 이동) 메모리 블록에 대 한 포인터입니다.

블록을 주어진된 크기 확장 합니다 메모리가 부족 하 여 없으면 원본 블록 왼쪽 변경 되지 않는 경우, 및 NULL 이 반환 됩니다.

경우 size 0이 포인터가 가리키는 블록입니다 memblock 해제 됩니다. 반환 값이 NULL, 및 memblock 에서 해제 된 블록을 가리키는 왼쪽입니다.

저장소가 저장소의 모든 종류의 개체에 대 한 적절 한 정렬 되어야 보장 됩니다 반환 값을 가리킵니다.이외의 다른 형식에는 포인터를 가져올 수 void, 반환 값을 캐스팅 하는 형식을 사용 합니다.

설명

realloc 함수가 할당 된 메모리 블록의 크기를 변경 합니다.memblock 인수가 가리키는 메모리 블록의 시작 부분에.경우 memblock 입니다 NULL, realloc 같은 방식으로 동작 하는 malloc 새 블록을 할당 하 고 size 바이트입니다.경우 memblock 수 없습니다 NULL, 그 이전 호출에 의해 반환 되는 포인터 여야 합니다 calloc, malloc, 또는 realloc.

size 인수 블록의 새 크기를 바이트 단위로 제공 합니다.새 블록을 다른 위치에 수 있지만 블록의 내용이 새 및 이전 크기, 짧은까지 업데이트할 수 있습니다.새 메모리 위치에 새 블록 수 있습니다 때문에 포인터 반환 하 여 realloc 포인터가 전달 되지 않을 수도 있는 memblock 인수입니다.realloc않습니다 0 새로 할당 된 메모리의 버퍼 증가 하지 않습니다.

realloc설정 하는 errno 에 ENOMEM 메모리 할당 오류가 발생 하는 경우 또는 메모리 양을 초과할 경우 _HEAP_MAXREQ.이 문제 및 기타 오류 코드에 대 한 자세한 내용은 errno, _doserrno, _sys_errlist, _sys_nerr.

realloc호출 mallocC++를 사용 하 여 _set_new_mode 새 처리기 모드를 설정 하는 함수입니다.새 처리기 모드를 나타내는 것인지, 오류가 발생 하면 malloc 으로 설정 새 처리기 루틴을 호출 하는 것 _set_new_handler.기본적으로 malloc 메모리 할당에 실패 시 새 처리기 루틴을 호출 하지 않습니다.이 기본 동작을 재정의할 수 있습니다 있도록, realloc 메모리를 할당 하지 못할 malloc 에서 동일한 새 처리기 루틴을 호출 방법을 new 연산자 같은 이유로 실패 하는 경우를 하지.기본값을 재정의 하려면 호출

_set_new_mode(1)

초기 단계에서 이란 프로그램 또는 NEWMODE와 연결 합니다.OBJ (see 연결 옵션).

C 런타임 라이브러리의 디버그 버전을 응용 프로그램이 연결 될 때 realloc 확인 _realloc_dbg.디버깅 프로세스 동안 힙 관리 하는 방법에 대 한 자세한 내용은 참조 하십시오. CRT 디버그 힙.

realloc표시 된 __declspec(noalias) 및 __declspec(restrict), 함수가 전역 변수를 수정 하려면 보장 되 고 별칭이 지정 된 포인터가 반환 수 없습니다.자세한 내용은 별칭제한.

요구 사항

루틴

필수 헤더

realloc

<stdlib.h> 및 <malloc.h>

추가 호환성 정보를 참조 하십시오. 호환성 소개에서 합니다.

예제

// crt_realloc.c
// This program allocates a block of memory for
// buffer and then uses _msize to display the size of that
// block. Next, it uses realloc to expand the amount of
// memory used by buffer and then calls _msize again to
// display the new amount of memory allocated to buffer.
 

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>

int main( void )
{
   long *buffer, *oldbuffer;
   size_t size;

   if( (buffer = (long *)malloc( 1000 * sizeof( long ) )) == NULL )
      exit( 1 );

   size = _msize( buffer );
   printf_s( "Size of block after malloc of 1000 longs: %u\n", size );

   // Reallocate and show new size:
   oldbuffer = buffer;     // save pointer in case realloc fails
   if( (buffer = realloc( buffer, size + (1000 * sizeof( long )) )) 
        ==  NULL )
   {
      free( oldbuffer );  // free original block
      exit( 1 );
   }
   size = _msize( buffer );
   printf_s( "Size of block after realloc of 1000 more longs: %u\n", 
            size );

   free( buffer );
   exit( 0 );
}
  

해당 .NET Framework 항목

해당 사항 없음. 표준 C 함수를 호출할 수 있습니다 PInvoke. 자세한 내용은 플랫폼 호출 예제.

참고 항목

참조

메모리 할당

calloc

free

malloc