_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. 자세한 내용은 플랫폼 호출 예제.