day17 - 动态内存的分配初步理解
- 为什么需要动态内存分配?
- 1.动态内存很好的解决了传统数组的缺陷
- 2.传统数组也叫做静态的数组
- 动态构造一维数组的方法一:
- #include <stdio.h>
- #include <malloc.h>
- int main(void)
- {
- //静态的
- int a[5] = {1,2,3,4,5}; // *a[0] ==a
- // printf("%d\n",a[2]);
- int len = 5;
- //动态数组
- int *p = (int *)malloc(sizeof(int) *len);
- int i = 0;
- for(i=0;i<len;i++)
- {
- scanf("%d",p+i);
- }
- printf("输出后的结果:\n");
- for(i=0;i<len;i++)
- {
- printf("%d,",*(p+i));
- }
- free(p);
- return 0;
- }
- 方法二:
- #include <stdio.h>
- #include <malloc.h>
- int main(void)
- {
- int len = 6;
- int *p =(int *) malloc(sizeof(int)*len); //一维数组。
- int i = 0;
- for(i=0;i<len;i++)
- {
- scanf("%d",&p[i]);
- }
- for(i=0;i<len;i++)
- {
- printf("%d,",p[i]);
- }
- free(p);
- return 0;
- }
- 动态内存和静态内存的比较:
- 静态内存是由系统自动分配的,由系统自动释放.
- 静态内存存储在栈内存中
- 动态内存是由程序员自动分配的,手动释放
- 动态内存是堆分配的。
- 多重指针的区别:
- #include <stdio.h>
- void show(int ***q)
- {
- ***q = 22;
- }
- int main(void)
- {
- int i = 10;
- int *a = &i;//把i变量的地址存储在指针变量a中
- int **b = &a; // 把a的内存地址存储在b指针中.但是呢. 因为a是*a类型的.所以我们在保存的时候要写成**b
- //意思: 指针的指针
- show(&b);
- printf("%d\n",i);
- return 0;
- }
- /*
- 多重指针区别:
- 我可以通过b来直接修改i的值吗
- */
转载于:https://blog.51cto.com/wangweihao/895783
day17 - 动态内存的分配初步理解相关推荐
- 结构体的使用和动态内存的分配及释放
结构体 什么是结构体?结构体是用户根据实际需要自己定义的复合数据类型.结构体的出现是为了表示一些复杂的数据,而普通的数据类型无法满足要求. 结构体的定义: struct Student //struc ...
- 动态内存的分配与释放
1.new与delete运算 c++提供了两个中重要的运算符:new和delete.由于他们是运算符不是函数,因此执行效率更高. 运算符 功能 目 结合性 用法 new[] 动态分配 单目 自右向左 ...
- 操作系统:动态内存分区分配算法实现(C++)
一.设计目标 使用 C++编程实现动态分区分配存储管理,解决存储分配时多道程序之间如何共享主存的存储空间的问题. 二.算法原理 1.首次适应算法 将空闲分区链以地址递增的顺序连接;在进行内存分配时,从 ...
- Linux中动态内存的分配与回收(heap, buddy system, stab)
1.malloc 和free的原理(http://m.blog.csdn.net/article/details?id=39496057) 从操作系统角度来看,进程分配内存有两种方式,分别由两个系统调 ...
- 动态内存的分配用法和构造动态一维数组
int * pArr; pArr = (int *)malloc(4 * length); 相当于 构造了这样一个数组 int pArr[length]; #include <stdio. ...
- 比大小,人类智慧天花板,任意类型,任意个数。内容包含函数模板的创建,类的创建,动态内存的分配与释放,函数调用指针的用法。牵扯多个知识点。
比大小,看这一篇就足够,大家好,我是姜姜一名热爱C++编程的大学生,接下来我将通过代码演示如何利用C++实现任意类型,任意个数的比大小,并且找出最大的数. 由于本人比较懒,所有没写注释还请各位读者多多 ...
- Unix/Linux操作系统分析实验二 内存分配与回收:Linux系统下利用链表实现动态内存分配
Unix/Linux操作系统分析实验一 进程控制与进程互斥 Unix/Linux操作系统分析实验三 文件操作算法: 实现在/proc目录下添加文件 Unix/Linux操作系统分析实验四 设备驱动: ...
- C语言 :学习动态内存分配
文章目录 C语言动态分配 为什么存在内存分配? 动态内存函数的介绍 `malloc` `free` `free`函数的**作用原理**是: 使用后将指针赋为`NULL` `calloc` 运用一次`c ...
- 关于C++的动态内存分配
为什么要使用动态内存分配? 比较常见的情况是当我们使用一个数组时,我们需要去声明它,同时我们还需要提供给它一个编译时常量用于指定数组的长度.但是,我们有时候需要的数组并不是定长的.例如,我们要存储一个 ...
最新文章
- 分享Kali Linux 2017年第29周镜像文件
- JVM系列之:JIT中的Virtual Call接口
- android 结束if循环_(第五讲)if 分支语句和 while 循环
- SQL 查找是否存在,别再 count 了,很耗费时间的!
- Kubernetes Ingress入门指南和实践练习
- HBase 源码解析
- 《游戏设计艺术(第二版)》读书笔记
- java 电子签章_PDF开发+电子签章,如何实现真正地脱离硬件的无纸化办公体验(实战篇)?...
- 制定目标时需要遵循的SMART原则
- 工作-一个依赖依赖的依赖导致的血案
- uni-app实现扫码功能
- OpenDrive格式地图数据解析
- 【monkey】monkey测试入门
- 10.2.0.1到12.2.0.1数据库迁移expdp+dblink导入失败
- MSP430单片机各种寄存器总结(2)——UCS
- 手机终于找到一个好的输入法了,那就是A4输入法触摸屏版
- Ruby语言介绍(一)——Ruby风格指南
- joomla模板开发
- 求10的7次方阶乘的位数
- php模拟微信公众号服务器,GitHub - Lin07ux/wechat-third-server: 使用 ThinkPHP、Vue 搭建一个带有后台的微信公众号第三方服务器的基础模板...