| |
|
开发:
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语言]动态内存分配|malloc realloc calloc函数|相关错误|习题|柔性数组 -> 正文阅读 |
|
[C++知识库][c语言]动态内存分配|malloc realloc calloc函数|相关错误|习题|柔性数组 |
为什么需要动态内存分配?我们一般的内存开辟方式:
这种方式开辟的空间大小是固定的,它所需要的空间在编译时分配。 但在实际需求中,有时我们的需要的空间大小在程序运行时才知道。 为了能自由调整空间大小,我们就需要动态内存开辟了。 相关函数介绍malloc和free头文件: 常用的开辟空间的函数malloc
与之相应的释放动态内存函数free
例子🌰
p=NULL是否有必要? 由于free函数不会改变指针的值,因此在把它所指向的空间释放后,该指针成为野指针,安全起见,应该置为空。 calloc
功能上与malloc的区别就在于会把开辟的空间初始化。 realloc
例子🌰
注意:①处不可以直接写为 常见错误总结对空指针的解引用例子🌰
对动态开辟空间的越界访问例子🌰
对非动态开辟内存使用free释放例子🌰
使用free释放动态开辟内存的一部分例子🌰
对同一块空间多次释放
忘记释放动态开辟内存(内存泄漏)
这里p为局部变量,如果在函数内部忘记释放,走出函数后p被销毁,其所指向的动态开辟内存再也找不到,并且无法释放,这块内存将一直被占用,无法再次开辟使用,造成内存泄漏。 虽然程序运行结束会自动释放内存,但对于长期运行的程序,内存泄漏会导致内存越用越小,最终造成严重的后果。 注意:动态开辟的空间一定要记得释放,并且正确释放 相关题目?题目1
这段代码最终结果是什么? 答案:程序崩溃 因为函数采用传值调用的方式,动态开辟的空间并没有给到str,str依然为NULL,不符合strcpy的规则。 正确的方式:
?题目2
这段代码最终结果是什么? 答案:随机值 p数组为局部变量,虽然其地址被成功返回了,但由于函数外这块栈区空间被回收,str成为野指针,再通过地址去访问它得到的只能是随机值。 学完了动态内存分配,我们可以写一个动态版本的通讯录。[C语言] 通讯录|静态 动态 文件 链表 多版本讲解_CegghnnoR的博客-CSDN博客 柔性数组
例子🌰
sizeof返回4,因为不包括柔性数组内存。使用malloc分配内存时, 后续也可以使用
|
|
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年11日历 | -2024/11/24 10:00:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |