| |
|
|
开发:
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语言动态内存管理 |
C语言动态内存管理
1.本章重点
2.前言1.当前我们知道内存的使用方式1.创建一个变量int a=10;//局部变量-栈区 2.创建一个数组int arr[10]; 3.提出问题:不能控制创建数组的大小。(在C99标准下可以出现:int n;int arr[n];scanf("%d",n);的写法,但是VS2013不支持这种写法,gcc支持) 3.引出第一个问题:为什么存在动态内存分配1.分配涉及到的函数1.malloc
1.没有足够空间
2.有足够空间
2.free(释放空间函数)
malloc和free要成对使用3.callocvoid* calloc(size_t num,size_t size) 4.realloc1.realloc函数的出现让动态内存管理更加灵活。2.有时会我们发现过去申请的空间太小了,有时候我们又会觉得申请的空间过大了,那为了合理的时候内存,我们一定会对内存的大小做灵活的调整。那rea11oc函数就可以做到对动态开辟内存大小的调整。函数原型如下:void* rea1loc (void* ptr, size_t size); 3.ptr是要调整的内存地址4.size调整之后新大小5.返回值为调整之后的内存起始位置。6.这个函数调整原内存空间大小的基础上,还会将原来内存中的数据移动到新的空间。7.realloc在调整内存空间的是存在两种情况:情况1:原有空间之后有足够大的空间,返回原地址情况2:原有空间之后没有足够大的空间,考虑另外是否能重新开辟一块足够大的空间,若能,会有三个步骤:1.返回新地址。2.拷贝原有数据。3.free原来的空间。若否,返回NULL总提示及常见动态内存开辟错误总提示
错误一
错误二
错误三:对非静态内存使用free释放空间
错误四:使用free释放掉了一块动态开辟内存的一部分
错误五:对同一块动态开辟内存多次释放
解决:free§后必加p=NULL6.动态开辟内存忘记释放(内存泄漏)
相关题目:1.
2.返回栈空间地址问题
解释char p[]是堆区空间,出Getmemory后空间返还 相应的:静态局部变量放在静态区可以传回地址(空间内容还在)用static修饰局部变量,生命周期变长。因为static修饰后,a不放在栈上而是放在静态区。 相应的:动态空间放在堆区可以传回地址(空间还在)
3.会出现内存泄漏
4.释放空间后指针置为NULL,避免成为野指针
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图书馆 购物 三丰科技 阅读网 日历 万年历 2025年10日历 | -2025/10/26 4:22:58- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |