_expand
process.h:インデックス への移動
ヘッダーファイル
process.h
カテゴリ
メモリルーチン
プロトタイプ
void *_expand(void *block, size_t size);
説明
ヒープブロックを現在の位置で拡大または縮小します。
この関数は,ヒープ上での位置を移動しないで,割り当て済みのメモリブロックのサイズを変更します。ブロック内のデータは,ブロックの古いサイズと新しいサイズの小さい方の範囲までは変更されません。ブロックは,事前に malloc,calloc,または realloc を使って割り当てられ,解放されていない必要があります。
戻り値
ブロックを移動しないでブロックのサイズを変更できる場合,_expand は,そのブロックへのポインタを返します。ブロックのアドレスは変更されません。そうでない場合はヌルポインタを返し,ブロックの変更またはサイズ変更は行われません。
例
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
void main(void)
{
char *bufchar, *newbuf;
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 __far *)bufchar );
if ((newbuf = (char *) _expand (bufchar, 1024)) == NULL)
printf ("cannot expand");
else {
bufchar = newbuf;
printf (" Expanded block to %d bytes at %Fp\n",
_msize( bufchar ) , (void __far *)bufchar );
}
free( bufchar );
exit (0);
}
移植性
POSIX | Win32 | ANSI C | ANSI C++ |
---|---|---|---|
+ |