编程语言知识点二
[TOC] 编程语言中的一些基础语法一、结构体中的内存对齐问题 内存对齐就是编译器为了让 CPU 访问内存更快,按照一定的规则将结构体中的数据放置在特定的内存地址上,而不是简单地紧凑排列 1、为什么要进行内存对齐? 主要有两个原因:性能和平台兼容性 性能原因(主要原因): CPU 访问内存并不是一个字节一个字节读取的,而是以“块”(通常是 Word,即机器字长,如 4 字节或 8 字节)为单位读取。 如果对齐: 读取一个 int(4字节)只需要一次内存访问。 如果不对齐: 数据可能跨越了两个内存块,CPU 需要进行两次内存访问,然后通过位移和拼接才能拿到完整数据。这会大大降低效率。 平台原因(移植性): 某些硬件平台(如某些 ARM 架构或早期的 SPARC)要求特定类型的数据必须存储在特定的内存地址上(例如 int 必须在 4 的倍数地址)。如果访问未对齐的地址,可能会导致硬件异常(Crash)。 2. 内存对齐的三大黄金规则在默认情况下(未手动指定对齐系数),编译器遵循以下规则: 规则一:成员对齐结构体中第一个成员的偏移量(Offset)为...
编程语言知识点一
[TOC] 编程语言知识点一一、在main执行之前和之后的操作 在 C++ 程序中,main 函数虽然是程序员编写代码的入口,但并不是程序运行的真正起点,也不是终点。在 main 执行前后,操作系统和 C++ 运行时库(C Runtime Library, CRT)会进行一系列重要的初始化和清理操作。 1、在 main 执行之前的操作(初始化阶段): 在控制权移交给 main 之前,程序主要进行静态资源的初始化和运行环境的准备。 a、所有静态存储期的变量初始化 在 main 之前初始化的:1、全局变量 2、全局 static 变量 3、全局对象 4、全局 static 对象 5、类的 static 成员变量(这个 static 变量属于类,而不是对象) 不在 main 之前初始化的:局部的 static...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment