void*malloc(size_t size);函数 malloc()分配连续的内存区域,其大小不小于 size。当程序通过 malloc()获得内存区域时,内存中的内容尚未决定。
void*calloc(size_t count,size_t size);函数 calloc()分配一块内存区域,其大小至少是 count_size。换句话说,上述语句分配的空间应足够容纳一个具有 count 个元素的数组,每个元素占用 size 个字节。而且,calloc()会把内存中每个字节都初始化为 0。
#include <stdlib.h> // 提供函数原型
typedef struct { long key;
/* ...其他成员... */
} Record; // 一个结构类型
float *myFunc( size_t n )
{
// 为一个double类型对象分配存储空间
double *dPtr = malloc( sizeof(double) );
if ( dPtr == NULL ) // 内存不足
{
/* ...处理错误... */
return NULL;
}
else // 获得内存:使用它
{
*dPtr = 0.07;
/* ... */
}
// 为两个Record类型分配存储空间
Record *rPtr;
if ( ( rPtr = malloc( 2 * sizeof(Record) ) == NULL )
{
/* ...处理内存不足错误... */
return NULL;
}
// 为一个具有n个float元素的数组分配存储空间
float *fPtr = malloc( n * sizeof(float) );
if ( fPtr == NULL )
{
/* ...处理错误... */
return NULL;
}
/* ... */
return fPtr;
}
// 为一个double类型对象分配存储空间
double *dPtr = calloc( 1, sizeof(double) );
// 为两个Record类型分配存储空间
Record *rPtr;
if ( ( rPtr = calloc( 2, sizeof(Record) ) == NULL )
{ /* ...处理内存不足错误... */ }
// 为一个具有n个float元素的数组分配存储空间
float *fPtr = calloc( n, sizeof(float));
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有