...malloc.... // 动态分配 1000 单元
...realloc.... // 再添加 分配 1000 单元
free( buffer )// 取消 单元
=============================================
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
void main( void )
{
long *buffer
size_t size
if( (buffer = (long *)malloc( 1000 * sizeof( long ) )) == NULL )
exit( 1 )
size = _msize( buffer )
printf( "Size of block after malloc of 1000 longs: %u\n", size )
/* Reallocate and show new size: */
if( (buffer = realloc( buffer, size + (1000 * sizeof( long )) ))
== NULL )
exit( 1 )
size = _msize( buffer )
printf( "Size of block after realloc of 1000 more longs: %u\n",
size )
free( buffer )
exit( 0 )
}
c语言动态数组扩充空间,主要是利用动态存储分配库函数来实现的,常用的有malloc函数和calloc函数。
malloc()是C语言中动态存储管理的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针。
例如:
char *x
x = (char *)malloc(10)//x就指向了包含10个字符单元的存储空间。
扩展资料:
函数定义
其函数原型为void *malloc(unsigned int size);其作用是在内存的动态存储区中分配一个长度为size的连续空间。此函数的返回值是分配区域的起始地址,或者说,此函数是一个指针型函数,返回的指针指向该分配域的开头位置。
如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。函数返回的指针一定要适当对齐,使其可以用于任何数据对象。
参考资料来源:百度百科-malloc函数
double *pif(!(p=(double *)calloc(N,sizeof(double)))) exit(1)
若是整型:
int *p
if(!(p=(int *)calloc(N,sizeof(int)))) exit(1)