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));
本文链接:http://task.lmcjl.com/news/18590.html