| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 【C语言】动态内存管理 -> 正文阅读 |
|
[C++知识库]【C语言】动态内存管理 |
0.目录1.摘要 1. 摘要本文主要详解C语言中的动态内存分配 2. 为什么存在动态内存管理
对,没错,不管是双精度浮点数 x 还是字符数组str,它们都是临时变量,所以当我们为其开辟内存的时候,都是在栈区上进行的。那么既然是在栈区上进行开辟的,那么对应的就被称为自动变量,也叫局部作用变量,特点是进入作用域,系统为这个变量自动分配内存空间;离开作用域时,系统自动为其销毁内存空间。
太棒了,就是如你所说的那样,无论是x还是str,它们所占的内存大小都是由系统自动进行分配的,double为8个byte,str数组为7个byte(包含‘\0’)。而且对于数组而言,我们在声明时就必须指定它的大小;创建局部作用变量之后,我们人为就无法改变它们的大小了。
有的时候,只有当程序运行的时候,我们才能知道我们需要开辟多大的内存空间,而事先无法知晓。那就试试动态内存分配吧。 别担心,我来教你。 3. 动态内存函数函数是C语言的基本单元,为了实现动态内存分配,我们就需要调用C语言库中的动态内存函数。 动态内存函数能为我们在堆区开辟内存。 所引用的头文件为 3.1 malloc
malloc函数的功能就是在静态区分配一块内存块给我们的程序 参数:内存大小(字节) 返回值:
3.2 free
free用来释放动态开辟的内存
例如,我们想动态开辟一块10个int类型大小的空间,因该遵循以下流程:
3.3 calloc
calloc函数也是用来动态分配内存的,但与malloc存在两大区别:
那让我们来看一下calloc的初始化,对以下代码进行调试:
调试结果如图一: 可见,40个字节的值被初始化成了0 3.4 realloc
动态内存分配的一大特点就是,能在内存不够用,或者内存开辟得太大的时候,对于开辟内存的大小进行灵活的调整,即对于一个指针指向的内存进行重新的分配 参数:
返回值:
realloc调整内存有2种情况: 情况一:原有空间之后有足够大的空间 那么realloc是怎么处理这两种情况的呢?请看图二: 情况一:要拓展内存,直接在原有内存后面追加空间,原来的数据不发生改变 总结:所以在使用realloc的时候,建议用一个临时指针tmpptr来接收realloc的返回值,如果tmpptr不为NULL,那么就可以安心地用ptr去接收tmpptr了 4. 常见的动态内存错误
5. 几个经典笔试题题目一:
题目二:
题目三:
题目四:
参考答案
题目二:
题目三:
题目四:
6. 参考文献1.《C Primer Plus》第6版 p396 - 401 注:有关C/C++的内存开辟以及柔性数组的概念,我会单开2篇博客进行讲解,欢迎大家阅读! |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/27 6:39:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |