다음을 통해 공유


_expand

메모리 블록의 크기를 변경합니다.

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

매개 변수

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

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

반환 값

_expand재할당된 메모리 블록을 가리키는 void 포인터를 반환합니다._expand을 달리 realloc, 블록의 크기를 변경 하려면 이동할 수 없습니다.따라서, 충분 한 메모리를 이동 하지 않고 해당 블록 확장 하는 데 사용할 수 있는 경우는 memblock 매개 변수를 _expand 반환 값입니다.

_expand반환 NULL 작업 도중 오류를 발견 하면.예를 들어, 경우 _expand 됩니다 메모리 블록을 축소 하려면이 옵션을 사용 하면이 있습니다 손상이 작은 블록 힙 또는 잘못 된 블록 포인터를 검색 하 고 반환 NULL.

부족 한 메모리를 이동 하지 않고 지정 된 크기에 블록을 확장 하는 데 사용할 수 있는 경우는, 함수 반환 NULL._expand요청 된 것 보다 작은 크기로 확장 블록에 반환 하지 않습니다.오류가 발생 하면 errno 는 장애의 특성을 나타냅니다.errno에 대한 자세한 내용은 errno, _doserrno, _sys_errlist, _sys_nerr를 참조하십시오.

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

설명

_expand 함수가 확장 또는 힙에 위치를 이동 하지 않고 블록 축소 하려고 시도 하 여 이전에 할당 된 메모리 블록의 크기를 변경 합니다.memblock 매개 변수 블록의 시작 부분을 가리킵니다.size 매개 변수는 바이트 블록의 새 크기를 제공 합니다.내용 블록의 새 및 이전 크기 짧은까지 변경 되지 않습니다.memblock해제 된 블록이 없습니다.

[!참고]

64 비트 플랫폼에서 _expand 새 크기가 현재 크기; 보다 작은 경우 블록 축소 수 없습니다 특히 블록 된 16 K 보다 작은 크기에 따라서 낮은 조각화 힙에 할당 된 경우, _expand 블록이 변경 되지 않은 상태로 끝냈다가 다시 memblock.

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

이 함수의 매개 변수의 유효성을 검사 합니다.경우 memblock 는 null 포인터의 설명에 따라이 함수에 잘못 된 매개 변수 처리기를 호출 매개 변수 유효성 검사.실행을 계속 수 있으면 errno 으로 설정 EINVAL 함수를 반환 하 고 NULL.경우 size 보다 큰 _HEAP_MAXREQ, errno 으로 설정 ENOMEM 함수를 반환 하 고 NULL.

요구 사항

Function

필수 헤더

_expand

<malloc.h>

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

예제

// crt_expand.c

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

int main( void )
{
   char *bufchar;
   printf( "Allocate a 512 element buffer\n" );
   if( (bufchar = (char *)calloc( 512, sizeof( char ) )) == NULL )
      exit( 1 );
   printf( "Allocated %d bytes at %Fp\n", 
         _msize( bufchar ), (void *)bufchar );
   if( (bufchar = (char *)_expand( bufchar, 1024 )) == NULL )
      printf( "Can't expand" );
   else
      printf( "Expanded block to %d bytes at %Fp\n", 
            _msize( bufchar ), (void *)bufchar );
   // Free memory 
   free( bufchar );
   exit( 0 );
}
  

해당 .NET Framework 항목

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

참고 항목

참조

메모리 할당

calloc

free

malloc

_msize

realloc