| |
|
|
开发:
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.语言内存四区模型: -> 正文阅读 |
|
|
[C++知识库]0.语言内存四区模型: |
1.内存四区模型
各区元素分析栈区:由编译器自动释放,存放函数参数的值,局部变量的值等。 堆区:一般由程序员分配和释放(动态的内存申请和释放),若程序员不释放,程序结束时可能? ? ? ? ? ? ? ? 由操作系统自动回收 全局区(静态区):存放全局变量和静态变量;初始化的全局变量和静态变量放在全局区的一块? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 区域中;未初始化的全局变量和静态变量放在另一块区域中,程序结束后有? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 操作系统释放 常量区:字符串常量和其他常量的存放位置,程序结束后由操作系统释放(属于静态区的中的常? ? ? ? ? ? ? ? ? 量区) 代码区:存放函数体的二进制代码 2.静态存储区
?注:1)指针指向谁就将谁的地址赋给指针 ? ? ? ? ?2)当示例中的指针p1和p2所指向的内存空间保存的数据一样时,p1和p2的值相同。即p1? ? ? ? ? ? ? ? ? 和p2所指向的内存空间是同一块区域。(相同的数据在静态存储区中只会开辟一次内存) ? ? ? ? ?3)若p1为一个地址则以%s,%c格式打印,打印p1,打印的是p1所指向的内存中的数据,若? ? ? ? ? ? ? ? 给p1赋值为为字符型获知字符串类型的数据,则是给p1所指向的内存空间进行赋值。? ? ? ? ? ? ? ? ? ? 以%d格式打印,则打印的是p1的值 ? ? ? ? ?4) 指针变量和指针所指向的内存空间变量是两个不同的概念 3.堆区/栈区
注:1)使用字符串和字符对对字符指针进行赋值时:使用p而非*p ? ? ? ?2)? malloc申请的内存空间在堆区 ? ? ? ?3)数组的内存空间开辟在栈区,函数执行完毕,数组所占的内存空间会被释放 ? ? ? ?4)int * temp = (char*)malloc(sizeof(char)*5);//int类型的指针temp指向堆区中开辟的? ? ? ? ? ? ? ? ? ? ? 保存5个char类型数据的的地址空间的首地址 ? ? ? ?5)一般情况下:栈的开口是向下的 ? ? ? ?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年11日历 | -2025/11/29 6:19:41- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |