首页 / 知识
关于c ++:POD类型是否总是对齐?
2023-04-17 05:02:00

Are POD types always aligned?例如,如果声明一个long变量,是否可以假定它始终在" sizeof(long)"边界上对齐? Microsoft Visual C ++联机帮助说是这样,但这是标准行为吗? 一些更多的信息: 一种。 可以显式创建未对齐的整数(* bar):
b。 显然,#pragma pack()仅影响结构,类和联合。 C。 MSVC文档指出POD类型与它们各自的大小对齐(但是,它始终是默认情况还是默认情况,它是标准行为,我不知道) 正如其他人提到的那样,这不是标准的一部分,而是由编译器来实现,因为它认为适合所讨论的处理器。例如,VC可以轻松实现与x86处理器不同的ARM处理器对齐要求。 Microsoft VC实现基本上称为自然对齐的方法,直到#pragma pack指令或/ Zp命令行选项指定的大小为止。这意味着,例如,任何大小小于或等于8个字节的POD类型都将根据其大小对齐。较大的将在8字节边界上对齐。 如果控制不同处理器和不同编译器的对齐很重要,那么可以使用1的打包大小并填充结构。
在此代码中, 答案:
是的,这很容易导致数据未对齐。在x86处理器上,这实际上并没有多大伤害。在其他处理器上,这可能导致崩溃或执行速度非常慢。例如,Alpha处理器将抛出处理器异常,该异常将被OS捕获。然后,操作系统将检查指令,然后进行处理未对齐数据所需的工作。然后执行继续。可以在VC中使用 默认情况下,是。但是,可以通过pack()#pragma进行更改。 我不认为C ++标准在这方面有任何要求,而将其留待实施。 C和C ++不要求任何对齐方式。但是x86强烈建议采用自然对齐方式,大多数其他CPU体系结构都要求采用自然对齐方式,并且编译器通常会尽最大努力使CPU满意。因此,在实践中,除非您真的扭曲了编译器,否则您不会看到编译器生成未对齐的数据。 通常,这是因为对它的读/写速度更快。但是几乎每个编译器都有一个开关来关闭它。在gcc中,它是-malign-???。对于聚集体,它们通常根据其中每个元素的对齐要求进行对齐和调整大小。 取决于编译器,编译指示和优化级别。使用现代编译器,您还可以选择时间或空间优化,这也可以改变类型的对齐方式。 是的,所有类型都始终至少符合其对齐要求。 怎么会这样呢? 但请注意,类型的sizeof()与对齐方式不同。 您可以使用以下宏来确定类型的对齐要求:
|
最新内容
相关内容
linux变量释放命令?
linux变量释放命令?,系统,环境,名称,工具,官网,简介,变量,环境变量,命令,内存,如何手动释放Linux内存?1、也就是说可以通过修改/proc中的文件,linux调出变量的命令?
linux调出变量的命令?,系统,工作,工具,信息,地址,代码,标准,名称,官网,命令,linux环境变量怎么设置方法方法一:用export命令,输入“export PATH=查看linux类型命令?
查看linux类型命令?,系统,信息,命令,状态,数据,数字,情况,地址,类型,文件,linux查看系统命令是什么1、linux怎么查看系统版本呢,下面就让我们来linux删除类型命令?
linux删除类型命令?,系统,档案,命令,文件,名称,环境,数据,不了,目录,文件夹,关于linux的删除命令命令格式:rm [选项] 文件… 命令功能:删除一个linux命令主机名变量?
linux命令主机名变量?,系统,主机名,查询系统,命令,终端,编辑,提示符,根目录,文件,用户,linux如何修改主机名首先,以 root 用户身份登录 Red Hat查看linux库类型命令?
查看linux库类型命令?,系统,工作,信息,状态,电脑,命令,工具,代码,地址,发行,如何查看Linux上程序或进程用到的库查看程序依赖的动态库:readelflinux网卡类型命令?
linux网卡类型命令?,网络,系统,地址,信息,设备,状态,服务,名称,名字,网卡,如何配置Linux网卡配置网卡地址:点击 网络(K) 按钮进行配置网络 选择linux代码对齐命令?
linux代码对齐命令?,系统,地址,标准,信息,对比,名称,代码,命令,文件,工作,linux命令大全之diff命令详解diff[参数][文件1或目录1][文件2或目录linux变量是一个命令?
linux变量是一个命令?,系统,信息,变量,名称,官网,地址,环境,代码,地方,命令,$在linux里什么意思所谓$:也就是咱们平常说的“命令提示符”也就是linux中变量取余命令?
linux中变量取余命令?,地址,工作,系统,数据,信息,命令,分析,目录,控制台,文件,linux系统常用操作命令linux常用命令有pwd命令、cd命令、ls命令linux查看命令类型用?
linux查看命令类型用?,信息,系统,情况,命令,实时,工作,设备,电脑,文件,类型,如何区分linux文件类型?1、普通文件类型 Linux中最多的一种文件类linux命令三种类型?
linux命令三种类型?,工作,地址,系统,标准,时间,管理,命令,目录,信息,文件,linux常用命令linux常用命令:查看内核版本:uname-a。图形界面:init5或