| |
|
开发:
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语言 |
目录 一、为什么存在动态内存分配在我们还没有学习到动态内存分配之前,通常都是这样开辟空间的:
这样开辟空间的方式有两个特点: 1、开辟的空间大小是固定的 2、数组在声明时必须标出数组长度,而数组所需要的内存在编译时分配。 而有时通过程序运行,我们才知道我们需要的空间大小,这时很可能会出现我们对于空间需求的预计和实际情况不符合的情况。那数组的编译时开辟空间的方式就不能满足了,这就需要用到我们的动态内存分配的方法解决问题。 二. 动态内存函数的介绍C语言提供了一些动态内存开辟的函数,在这我们介绍几个常用的动态内存开辟函数。 2.1 malloc 和 freemalloc函数分配所需的内存空间,并返回一个指向它的指针,malloc的声明如下:
参数:size?-- 指内存块的大小,以字节为单位。 返回值:若malloc请求成功,则返回一个指向已分配内存空间的指针 ,如果请求失败,则返回 NULL。(所以使用malloc时,我们先需要判断它是否请求成功,避免野指针问题。)并且返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。 free函数释放之前调用 calloc、malloc 或 realloc 所分配的内存空间。它的声明如下:
参数:ptr -- 指针指向一个要释放内存的内存块,该内存块之前是通过调用 malloc、calloc 或 realloc 进行分配内存的。如果传递的参数是一个空指针,则不会执行任何动作。 返回值:该函数不会返回任何值。 注:当动态内存空间使用完毕后需及时用free函数释放动态内存空间,否则会出现内存泄漏的问题。 正确的free函数使用案例:
2.2?calloccalloc函数分配所需的内存空间,并返回一个指向它的指针。malloc?和?calloc?之间的不同点是,malloc 不会将分配的内存初始化为0,而 calloc 会将分配的内存初始化为零。
参数:?nitems?-- 要被分配的元素个数。size?-- 元素的大小。 返回值:若calloc请求成功则会返回指向新开辟内存空间的指针,否则返回NULL。 calloc正确使用方法:
2.3 reallocrealloc函数尝试重新调整之前调用?malloc?或?calloc?所分配的?ptr?所指向的内存块的大小。 它的声明如下:
参数:
返回值:该函数返回一个指向已分配的内存的指针。如果请求失败,则返回 NULL。 realloc正确使用方式:
三、常见的动态内存管理错误3.1对空指针进行解引用操作
3.2在开辟的动态空间进行越界访问
3.3 对非开辟的动态内存空间进行释放
3.4?使用free释放一块动态开辟内存的一部分
3.5 对同一块动态内存多次释放
3.6 动态开辟内存忘记释放(内存泄漏)
|
|
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年1日历 | -2025/1/11 12:32:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |