做网站市场报价,网站建设注意事项 南京,大学网站建设多少钱,天津公司网站建设公司哪家好写在前面#xff1a; 由于时间的不足与学习的碎片化#xff0c;写博客变得有些奢侈。 但是对于记录学习#xff08;忘了以后能快速复习#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位#xff0c;以时间为顺序#xff0c;仅仅将博客当做一个知识学习的目录 由于时间的不足与学习的碎片化写博客变得有些奢侈。 但是对于记录学习忘了以后能快速复习的渴望一天天变得强烈。 既然如此 不如以天为单位以时间为顺序仅仅将博客当做一个知识学习的目录记录笔者认为最通俗、最有帮助的资料并尽量总结几句话指明本质以便于日后搜索起来更加容易。 标题的结构如下“类型”“知识点”——“简短的解释” 部分内容由于保密协议无法上传。 点击此处进入学习日记的总目录 2024.01.27 一、C/Cmalloc——动态申请内存二、C/Ccalloc ——动态申请内存三、C/Crealloc——内存空间修改 一、C/Cmalloc——动态申请内存 函数使用通用数据库stdlib.h 原型为void *malloc(unsigned int num_bytes) num_byte为要申请的空间大小需要我们手动去计算如int *p (int *)malloc(20*sizeof(int)) 如果编译器默认int为4字节存储的话那么计算结果是80Byte一次申请一个80Byte的连续空间并将空间基地址强制转换为int类型赋值给指针p此时申请的内存值是不确定的。 例程请参考本文章链表笔记——一个将所输入数字从小到大排序的程序题 二、C/Ccalloc ——动态申请内存 函数使用通用数据库stdlib.h 原型为void *calloc(size_t n, size_t size) 其比malloc函数多一个参数并不需要人为的计算空间的大小 比如果他要申请20个int类型空间只需要int *p (int *)calloc(20, sizeof(int)) 这样就省去了人为空间计算的麻烦。
但这并不是他们之间最重要的区别malloc申请后空间的值是随机的并没有进行初始化 而calloc却在申请后对空间逐一进行初始化并设置值为0; 例程
#include stdio.h
#include stdlib.h
//using namespace std;int main()
{int* p (int*)malloc(20 * sizeof(int));int* pp (int*)calloc(20, sizeof(int));int i;printf(malloc申请的空间值:\n\n);for (i 0; i 20; i){printf(%d , *p);}printf(\n\n);printf(calloc申请的空间的值:\n\n);for (i 0; i 20; i){printf(%d , *pp);}printf(\n);
}结果为
三、C/Crealloc——内存空间修改 函数使用通用数据库stdlib.h 原型void realloc(void *ptr, size_t new_Size) 用于对动态内存进行扩容即已申请的动态空间不够使用需要进行空间扩容操作 ptr为指向原来空间基址的指针 new_size为接下来需要扩充容量的大小。 例程
#include stdio.h
#include stdlib.h
//using namespace std;int main(void)
{const int size 2000;int* p (int*)malloc(20 * sizeof(int));int* pp (int*)realloc(p, size * sizeof(int));printf(原来的p地址:\t%x\n扩容后的pp地址:\t%x \n\n, p, pp);return 0;
}结果为 参考链接 calloc、malloc、realloc函数的区别及用法 关于内存分配malloc、calloc、realloc的区别