南通网站群建设,产品网站做营销推广,镇江一网推网络技术有限公司,seo关键词推广多少钱C程序运行时#xff0c;内存将被划分为三个区域#xff0c;而动态开辟的内存区间位于堆区。 文章目录
前言
一、内存划分
二、malloc函数
三、calloc函数
四、realloc函数
五、free函数
总结 前言
在使用C语言编写程序时#xff0c;使用动态内存是不可避免的#x… C程序运行时内存将被划分为三个区域而动态开辟的内存区间位于堆区。 文章目录
前言
一、内存划分
二、malloc函数
三、calloc函数
四、realloc函数
五、free函数
总结 前言
在使用C语言编写程序时使用动态内存是不可避免的因此了解动态内存管理函数也是必要的。
本文讲了关于动态内存管理的四个函数的使用和注意事项。 一、内存划分
以下为C程序运行时内存的划分图 二、malloc函数
该函数为C语言的动态内存开辟函数
void* malloc(size_t size);
注意事项
开辟成功返回一个指针指向开辟好的空间开辟失败返回NULL;返回类型为void*使用时需要用户根据需要修改数据类型若size为0malloc的行为是未定义的由编译器自己决定。
三、calloc函数
该函数为C语言的动态内存分配函数
void* calloc(size_t num, size_t size);
num:元素个数
size:字节大小。
注意事项
开辟成功返回一个指针指向开辟好的空间开辟失败返回NULL;返回类型为void*使用时需要用户根据需要修改数据类型若size为0calloc的行为是未定义的由编译器自己决定。注 malloc申请到的空间没有初始化直接返回起始地址 calloc申请好空间后会把空间初始化为0然后返回起始地址。 四、realloc函数
该函数为C语言的对动态开辟内存大小的调整的函数
void* realloc(void* ptr, size_t size);
注意事项
指针ptr指向的内存空间后有足够的空间可以扩容直接在后边续上新的空间返回旧的起始地址当后边没有足够的空间扩容时realloc会找一个满足空间大小的新的连续的空间。把旧的空间的数据拷贝新空间的前面的位置并且把旧的空间释放掉返回新的空间的地址。realloc扩容失败时返回NULL。
五、free函数
专门做动态内存的释放和回收
void free(void* ptr);
注意 ptr是指向一片连续的堆区的内存空间。 总结
在使用完calloc|malloc|realloc函数之后一定一定要记得使用free函数释放空间哦~
上述函数说明就是整个动态内存管理函数的全部啦如果你有兴趣想要深入了解可以通过写一个动态的通讯录理解它们C_Ccpp/C_study/contact at main · Yjun6/C_Ccpp (github.com)。