![]() |
1
10
这无疑是一个校准问题。在许多体系结构中,某些类型必须正确对齐,例如4字节整数 必须 从4字节边界开始。 如果您访问不对齐的数据,一些架构将不关心,其他架构将运行得更慢,还有一些架构(例如在本例中)将陷入尖叫的堆中。
当你
创造
整数
通过在字节上向上移动该地址,并将其作为
This link 在Oracle上显示了对齐要求。简而言之:
|
![]() |
2
1
16位数量必须以16位或2字节的对齐方式存储,32位(4字节)必须以4的倍数存储在地址中。 许多CPU支持未对齐的访问,但它需要额外的芯片电路和额外的执行时间来运行额外的内存总线周期来获取奇数字节。这是一种特别常见的RISC处理器原理,要求编译器和程序员更加小心地布局数据,以提高速度和简化电路,这是可以接受的折衷。 顺便说一下,这样的低地址不太可能在有效内存中。但您的示例确实说明了对齐异常优先于segfault异常。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 3 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 3 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 3 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |