| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 【让你从0到1学会c语言】动态内存管理 -> 正文阅读 |
|
[C++知识库]【让你从0到1学会c语言】动态内存管理 |
前言:什么是动态内存?动态内存是指在堆上分配的内存,而静态内存是指在栈上分配的内存。 前面所写的程序大多数都是在栈上分配的,比如局部变量、形参、函数调用等。 栈上分配的内存是由系统分配和释放的,空间有限,在复合语句或函数运行结束后就会被系统自动释放。 动态内存分配的函数:malloc函数、free函数、calloc函数、realloc函数。
malloc函数:这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。
malloc函数如何使用??如上图:我们开辟了40个字节的动态空间。 malloc函数使用时,可能会出现的问题:
free函数:我们有可以开辟空间的函数,肯定也有释放空间的函数啊! ?free函数如何使用:
使用的时候存在的一些问题:?动态空间释放不完全:?我们这里发现我们释放的是q而不是p,这其中的原因是什么呢! 我们发现了,p的位置在不断向后走,而我们free函数的参数是一块空间的起始地址,然后我们free(p),我们就只释放后面30空间,而前面10个空间并没有释放,就造成了空间的浪费。
当开辟的空间的起始地址为空指针:?
?calloc函数:calloc如何定义:?calloc与malloc都是用来开辟动态空间的?
calloc如何使用:?realloc函数:?realloc与malloc和calloc函数不太一样,realloc函数是用来更改空间大小的函数。 relloc如何定义:.?realloc函数既然是更改动态空间的大小,它肯定要先找到这一块动态空间!
当我们更改后的动态空间的大小不够时:
静态和动态内存的存储地方:
? 动态内存分配常见错误:当malloc开辟的空间的起始地址为空指针:?我们不能对空指针进行解引用操作,所以得先判断是否为空指针,避免错误。 动态内存越界访问的问题:
?对非动态开辟内存使用free释放:?会报错的,别犯贱这么写 ?使用free释放一块动态开辟内存的一部分:这个就是为什么我们要提前用一个指针将起始地址保存好的原因 对同一块动态内存多次释放?:
?动态开辟内存忘记释放(内存泄漏):
? 关于动态内存相关的笔试题:
C和C++的内存开辟:C/C++程序内存分配的几个区域:
?柔性数组:
柔性数组使用的注意事项?:
? 柔性数组的使用?:柔性数组相对于自定义结构的好处:
? |
|
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:30:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |