C/C++
文章平均质量分 79
Wallace Zhang
目标:
有朝一日,自己能独立完成一个机器人。
博客初衷:
将学习到的知识分享给大家,一起学习,同时自己又能再一次提高对知识的理解(费曼定理)
爱好:
喜欢手冲黑咖啡。
展开
-
C语言 | 内存对齐03 - 内存对齐的公式
文章目录一、前言二、公式2.1、例子一例子二例子三一、前言每一个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。GCC中默认#program pack(4),即4个字节的内存对齐。Keil也是采用4字节对齐的。也可以通过预编译命令#pragma pack(n),n = 1,2,4,8,16来改变这一系数,一般情况下尽量使用自然对齐系数,不要修改它。STM32单片机上各个变量占用的字节数:二、公式公式一、结构体变量里,成员的起始地址必须满足 : 起始地址 % 成员的字节数(si原创 2021-08-13 17:47:36 · 1261 阅读 · 1 评论 -
C语言 | 内存对齐02 - 为什么会有内存对齐?它解决了什么问题
文章目录一、前言二、内存对齐为4个字节的好处三、内存对齐的目的是以空间换取速度3.1、内存对齐为4的例子3.2、内存没有使用内存对齐的例子四、掌握内存对齐的必要性一、前言内存对齐的目的是为了提高CPU读写内存里数据的速度。现代的CPU读取内存并不是一个一个字节挨着读取,这样做的效率非常低。现代的CPU一般以4个字节(32bit数据总线)或者8个字节(64bit数据总线)为一组,一组一组地读写内存里的数据。二、内存对齐为4个字节的好处首先,了解一下CPU从内存里读取数据的流程:第一步,CPU通过原创 2021-08-12 23:11:58 · 1041 阅读 · 2 评论 -
C语言 | 内存对齐01 - 什么是内存对齐
一、前言在单片机下使用C语言编程时,内存对齐的知识点必须掌握。掌握内存对齐后,可以防止内存碎片化,单片机有限的内存被更加有效地使用。二、内存对齐先看如下代码:结构体Test1占用了多少字节?如果事先不知道内存对齐的话,答案肯定是:1个字节(char)+ 4个字节(int)+ 1个字节(char) = 6个字节。事实上,Test1结构体占用了12个字节,从DEBUG模式下Watch1观察:OK,不就猜少了12个字节吗?有什么影响吗?先不说影响吧,咱们先来看看单片机内存里的实际情况。从上图看原创 2021-08-12 22:43:33 · 2156 阅读 · 19 评论