gpt4 book ai didi

c++ - 元素序列的对齐

转载 作者:行者123 更新时间:2023-11-28 02:43:51 25 4
gpt4 key购买 nike

规则,描述对象指针类型如下(3.7.4.3,N3797):

a sequence of elements in an array of narrow character type (3.9.1), where the size and alignment of the sequence match those of some object pointer type.

我假设序列的大小是序列中任何元素大小的总和。但是序列比对的定义是什么?

3.11/1 N3797 说:

Object types have alignment requirements (3.9.1, 3.9.2) which place restrictions on the addresses at which an object of that type may be allocated.

序列是对象类型还是其他类型?

最佳答案

“Alignment”是对象起始地址的对齐方式。

例如,对齐为 4 时,起始地址必须是 4 的倍数。

基本上这是一个硬件问题,本地址是 4 的倍数时,访问 4 字节对象会更有效(可以直接在一次操作中完成)。在许多平台上,未对齐访问被视为失败。在 Windows 中,对于“某些体系结构”,可以通过使用或不使用 SEM_NOALIGNMENTFAULTEXCEPT 标志调用 SetErrorMode 来指定行为。


关于标准中引用的段落,在可能将字节序列视为对象指针的上下文中,它必须至少与对象指针一样严格对齐。

如果不是,那么序列不可能是对象指针的表示,因此不可能构成对某物的逻辑引用(出于垃圾回收的目的)。

关于c++ - 元素序列的对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25058081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com