7.8存储器分配ANSI C说明了三个用于存储空间动态分配的函数。 (1) malloc:分配指定字节数的存储区。此存储区中的初始值不确定。 (2) calloc:为指定长度的对象,分配能容纳其指定个数的存储空间。该空间中的每一位(b i t)都初始化为0。 (3) realloc:更改以前分配区的长度(增加或减少)。当增加长度时,可能需将以前分配区的内容移到另一个足够大的区域,而新增区域内的初始值则不确定。
#include
void *malloc(size_t size);
void *calloc(size_t nobj, size_t size);
void *realloc(void *ptr, size_t newsize);
这三个函数返回:若成功则为非空指针,若出错则为NULL。
void free(void *ptr);
这三个分配函数所返回的指针一定是适当对齐的,使其可用于任何数据对象。在一个特定的系统上,如果最苛刻的对齐要求是double,则对齐必须在8的倍数的地址单元处,那么这三个函数返回的指针都应这样对齐。回忆1.6节中对类属void *指针和函数原型的讨论。因为这三个alloc函数都返回类属指针,如果在程序中包括了
对于那些想要深入了解malloc、calloc和realloc之间区别的读者,可以参考《malloc realloc calloc的总结》,详细探讨了这些函数的实现和应用。或者,若想要进一步了解它们在C语言中的实际使用,还可以查看《C语言中malloc calloc realloc的区别》,以及《c语言中malloc realloc与calloc的区别以及联系》。这些资源不仅解释了函数的基本原理,还提供了具体的代码示例和使用场景,非常适合那些希望掌握动态内存分配技术的程序员。
如果你对结构体内存的动态分配感兴趣,可以查阅《动态分配结构体内存calloc》和《动态分配结构体内存malloc》。这些文章详细说明了如何使用calloc和malloc在结构体内分配内存,帮助你更好地理解和应用这些函数。
为什么不马上点击这些链接,亲自去探索一下这些知识宝库呢?或许你会发现一些意想不到的惊喜!
暂无评论