当前位置: 首页 > news >正文

网站申请支付宝支付高港做网站

网站申请支付宝支付,高港做网站,易企网络网站建设,项目外包和人力外包哪个好如何在程序运行的时候动态给程序分配内存#xff1f; 文章目录1 动态内存分配的意义1.1 C语言中如何动态申请内存空间1.2 malloc和free的用法1.3 calloc与realloc1.31 calloc和realloc的代码案例分析2 总结1 动态内存分配的意义 在C语言中#xff0c;一切操作都是基于内存的… 如何在程序运行的时候动态给程序分配内存 文章目录1 动态内存分配的意义1.1 C语言中如何动态申请内存空间1.2 malloc和free的用法1.3 calloc与realloc1.31 calloc和realloc的代码案例分析2 总结 1 动态内存分配的意义 在C语言中一切操作都是基于内存的。变量和数组名都是内存别名。但是它们的内存分配却是在编译期间由编译器决定的。定义数组的长度的时候必须指定长度这是在编译期间就要确定的。 但是需求总是有的。比如当我们无法在编译期间确定到底需要多大的内存块此时就无法定义数组的大小或者定义的数组大小不够。此时就需要在运行的时候根据实际的情况比如根据输入的数据的大小来动态的申请内存空间然后让数组指针指向这块新申请的内存。 这就是动态内存分配的意义。 1.1 C语言中如何动态申请内存空间 malloc和free用于动态申请内存和释放内存 它们的操作对象是堆空间内存内存池如下图 注意malloc和free必须是成对出现的这样可以避免内存泄露。关于内存泄露后面还有文章进行学习。 1.2 malloc和free的用法 malloc和free的函数定义如下 malloc所分配的是一块连续的内存参数size是所分配的内存字节数。malloc的返回值是void* 具体使用的时候需要做强制类型转换free用于将申请的动态内存归还给系统 关于malloc和free有以下几点需要注意 malloc和free是库函数不是系统调用malloc实际分配的内存可能比请求的多。这是因为CPU访问内存是按照一种内存对齐的方式来访问的。所以一般申请的内存都是对齐内存的整数倍当请求的动态内存无法满足的时候malloc返回NULL当free的参数为NULL的时候函数直接返回。malloc申请的动态内存中的数据是随机值不会被初始化为0 至于malloc和free的用法在前面的文章已经学会使用了这里不再给出例子直接看前面的文章吧二维数组与二维指针 以及在后面的文章中会给出一个内存泄露检测模块来巩固malloc与free的使用。自行去后面的文章查看。 1.3 calloc与realloc 函数原型为; calloc的参数num个类型长度为size的内存空间大小。也就是申请的内存的类型信息大小和类型calloc会将申请的内存空间初始化为0realloc用于修改原先已经分配的内存块大小 当realloc的第一个参数pointer为NULL时realloc相当于mallocrealloc一般是重新找一块新的内存块进行分配而不是在原有的内存的结尾增加。 1.31 calloc和realloc的代码案例分析 代码38-2.c #include stdio.h #include malloc.h#define SIZE 5 int main() {int i 0;int* pI (int*)malloc(SIZE * sizeof(int));short* pS (short*)calloc(SIZE, sizeof(short));for (i 0; i SIZE; i) {printf(pI[%d] %d, pS[%d] %d\n, i, pI[i], i, pS[i]);}printf(Before: pI %p\n, pI);pI (int*)realloc(pI, 2 * SIZE * sizeof(int));printf(After: pI %p\n, pI);for (i 0; i 10; i) {printf(pI[%d] %d\n, i, pI[i]);}printf(\n);pS (short*)realloc(pS, 2 * SIZE * sizeof(short));for (i 0; i 10; i) {printf(pS[%d] %d\n, i, pS[i]);}free(pI);free(pS);return 0; }上述代码运行结果 Linux下gcc 4.4.5编译 Windows下 VS 2017运行如下: 分析 首先代码很很简单。无非就是使用了malloccalloc和realloc三个函数。其中我们可以看到在Linux下的gcc4.4.5编译器将malloc申请的内存的内容也都是0并不是随机值。但是这只是巧合或者gcc编译器优化了而已。在windows下的vs2017编译器就很明显malloc申请的内存的内容都是随机值根据两个结果可知道使用realloc后内存的地址变了也就是说realloc是重新选择一块内存进行分配并不是在原有的内存空间结尾增加也可以看到不管是在linux下还是在windows下calloc申请的内存的内容都被初始化为0了从windows下的编译运行结果来看使用realloc对之前使用calloc申请的内存重新分配内存后原有的内容不变但是新添加的内容并不是0而是随机值这个也要注意。 所以最终总结为只有calloc胡为分配的内存的内容初始化为0malloc和realloc都是随机值。 2 总结 动态内存分配使得程序在需要的时候有机会获得更大的内存malloc单纯的从系统中申请固定字节大小的内存。内存中的内容是随机值calloc 申请的内存的内容被初始化为0realloc用于重置内存的大小。但是是重新在堆空间中选一块内存而不是在原有的内存后面增加。并且重置的内存中原有的内容不变但是如果内存变大多余的部分的内存的内容是随机值。注意上述三者函数的参数与返回类型学会使用上述三者函数
http://wiki.neutronadmin.com/news/303196/

相关文章:

  • dedecms网站管理系统网站建设教程开源代码下载
  • 现在的网站推广是怎么做的seo如何挖掘关键词
  • 顺德网站建设公司有哪些赣州网页设计网
  • 如何做移动端网站正规的锦州网站建设
  • 铜梁集团网站建设邯山区建设局网站
  • 网站怎么做ipfs怎么可以创建网站
  • 怎么自己建网站张家口网站建设开发
  • 威海城乡与住房建设部网站中国印花图案设计网站
  • 衡水网站开发济南58同城网
  • 网站恶意攻击推广产品的渠道
  • 四大门户网站排名wordpress 关闭rss
  • 长基建站微网站和h5有什么区别
  • 宁波高端网站设计厂家新手电商
  • 医药企业建设网站需要什么wordpress 描述设为标题
  • 常熟专业做网站wordpress seo怎么写
  • php网站模板制作工具平房装修设计图片大全 效果图
  • 网站建设中的服务器搭建方式宣传策划方案
  • html嵌入网站高科技公司网站模板
  • c 网站开发中间层怎么写帝国网站源码手机
  • 专门做产品推广ppt的网站深圳注册公司需要租赁凭证吗
  • 开一个网站需要什么企业融资风险及其防范措施
  • 网站如何做竟价可以做科学模拟实验的网站
  • 做企业竞争模拟的网站wordpress安装主题主机名
  • 商城网站设计制作谷歌有趣的网站
  • 承德网站制作公司江西省seo
  • 安徽省建设干部网站网站建设与管理答案
  • 开发商城网站建设永久免费做网站
  • 怎样将自己做的网站发布到外网上ppt模板大全免费下载网站
  • 网站外链代发网站推广妙招
  • 做网站和做app哪个容易三只松鼠广告策划书