| |
|
开发:
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语言高级-C内核 |
本博客参考《嵌入式Linux与物联网软件开发C语言内核深度解析》 对于单片机而言,C语言程序内存是用来存储可变数据(变量)的,常量存储在flash当中。 对于内存: ? ? ? ? C无操作系统:通过编译器提供的变量名来管理内存(编译器会将变量名与给其分配的内存首字节地址绑定),函数名(指针)本质也是一个内存地址,定义数组就是一次性定义一堆变量(第一个变量a[0]的地址记录在数组名a中),结构体为聚合数据类型,一般传递结构体变量的指针来操作结构体。 ? ? ? ? C有操作系统:静态内存分配,动态内存分配:使用API,例如?malloc free接口 ? ? ? ? C++:new对象分配内存,delete删除对象 ? ? ? ? Java/C#:虚拟机 ? ? ? ? 分类:静态内存SRAM,动态内存DRAM ? ? ? ? 特点:可以随机访问 三总线:地址总线、数据总线、控制总线(地址总线位数决定内存的大小2^N次方) ? ? ? ? 1GB=1024MB? 1MB=1024KB? 1KB=1024B? 1B(字节)=8bit(位) ????????内存编址以字节为单位 ? ? ? ? 数据类型的本质是一个内存格子(存放数据值)的长度和解析方法 ?栈stack: ????????作用:用来保存非静态局部变量,将局部变量放入栈中(入栈),释放局部变量(出栈)(两操作由背后的运行时系统自动完成),在程序运行过程中跳转函数要通过栈来保存和恢复现场。 ? ? ? ? 特点:小内存、自动化;先进后出;栈的大小可以设定的。 堆heap: ? ? ? ? 作用:需要的内存容量比较大时,动态申请存储大容量数据,比如链表。 ? ? ? ? 特点:大内存、手工分配/使用/释放 静态存储区: ? ? ? ? 作用:存放静态局部变量和全局变量 ? ? ? ? 特点:随程序运行而分配空间,直到程序运行结束才释放释放空间。 |
|
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/23 17:05:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |