存储器 -- 1




mallocvoid *malloc(size_t size); 定义于stdlib.h头文件中分配指定字节的存储区,不对存储区进行初始化,所以存储区中内容是不确定的 callocvoid *calloc(size_t n, size_t size); 定义于stdlib.h头文件中分配n个size大小的连续内存,并全部用0初始化 reallocvoid *realloc(void *ptr, size_t num_bytes); 定义于stdlib.h头文件中更改已分配存储区大小,对于新增存储区,不初始化如果ptr为NULL,则与malloc完全等效 freevoid free(void *ptr); 定义于stdlib.h头文件中释放已分配的存储区 由于三个分配内存函数都是返回void *类型值,所以我们不需要对结果进行强制类型转换通常这些函数都是用sbrk系统调用实现的 allocavoid * alloca(size_t size); alloca是一个特殊的存储区分配函数,用于替代malloc,并不是ISO C的一部分他的优点是会在栈空间中动态开辟空间,而不是在堆中,这样,每当函数调用结束,空间会被自动释放,因此不会造成内存泄漏,但是他的缺点是栈帧的长度
#读书笔记    #技术帖    #linux    #unix   



京ICP备15018585号