Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
物理内存的对齐是如何保证的?
malloc 返回适合任何内置类型的内存 如果需要更具体的对齐 例如 16 或 32 字节 可以在应用程序级别完成 但这种对齐是在虚拟内存级别 如何保证底层物理内存也处于相同的对齐方式 虚拟内存是在页面级别实现的 因此每个虚拟机页面在加载到
c
memorymanagement
memoryalignment
通过强制转换在 uint8_t[8] 和 uint64_t 之间安全转换?
我目前正在做的方式 我宁愿摆脱memcpy call uint64 t integer uint8 t string 8 memcpy integer string 8 or swap the parameters 假设integer数组长
c
Optimization
casting
memcpy
memoryalignment
如何在C中分配和释放对齐内存
如何分配与 C 中特定边界 例如缓存行边界 对齐的内存 我正在寻找类似 malloc free 的实现 理想情况下应尽可能可移植 至少在 32 位和 64 位架构之间 编辑添加 换句话说 我正在寻找一些行为类似的东西 现在已经过时了 mem
c
Alignment
memorymappedfiles
memoryalignment
为什么在 Fortran 中某些数组没有正确对齐以进行矢量化?
我正在尝试通过矢量化 for 循环来改进 Fortran 77 代码 我对矢量化相当陌生 虽然我可以获得矢量化代码 但优化报告告诉我 我的一些数组具有未对齐的访问权限 据我了解 这使得矢量化效率较低 我已手动向数组添加填充 以便对齐数据 这
Arrays
Fortran
Alignment
vectorization
memoryalignment
从 C 访问网络数据包中未对齐数据的安全、有效的方法
我正在用 C 为 ARM9 处理器上的 Linux 编写一个程序 该程序用于访问网络数据包 其中包括一系列标记数据 例如
c
Networking
memoryalignment
为什么编译器将此变量初始化为错误的值?这是对齐问题吗?
我正在使用嵌入式 C 编译器 ARM cortex m3 芯片 它似乎将错误的值初始化为结构 为什么会出现这种情况 如果是对齐问题 编译器不应该知道将 int32u 与 4 字节边界对齐吗 注意 printf 只是将字节从串行端口中抛出 该
c
memory
compilerconstruction
memoryalignment
使用数组下标运算符访问结构成员
假设有一个类型 T 和一个仅包含 T 类型的统一元素的结构 struct Foo T one T two T three 我想通过以下方式访问它们 struct Foo T one T two T three T operator int
c
crossplatform
memoryalignment
为什么 C 数组尾部有多余的字节? [复制]
这个问题在这里已经有答案了 我检查了 C 数组尾部可能有一些额外的字节 有我的代码 int a 5 int test 1 2 3 4 int b 5 test 1 11 test 4 11 cout lt lt b lt lt endl 1
c
Arrays
memoryalignment
动态分配正确对齐的内存:char 数组上的 new 表达式合适吗?
我正在关注 Stefanus Du Toit 的滴漏模式 即用 C 实现 C API 然后再次用 C 包装它 这与pimplidiom 它对用户也是透明的 但可以防止更多与 ABI 相关的问题 并允许更广泛的外语绑定 正如在指向实现的指针方
c
memorymanagement
memoryalignment
如何设置.data节的对齐方式?
我在中定义了以下变量 dataNASM 部分 section data var1 DD 12345 int 4 bytes var2 DB A char 1 byte padding1 DB 123 1 byte padding paddi
Assembly
visualc
x86
nasm
memoryalignment
内存对齐:如何使用alignof/alignas?
我现在使用共享内存 我不明白alignof and alignas 参考参数 http en cppreference com w cpp language alignof尚不清楚 alignof返回 对齐 但什么是 对齐 为下一个要对齐的
c
C11
x8664
memoryalignment
为什么需要内存对齐?
我知道这个问题已经被问过一千次了 我已经阅读了每一个答案 但我仍然不明白 我的 RAM 模型可能存在一些根本性错误 使我无法理解任何答案 我从互联网上得到了所有这些小信息 但我就是无法将它们联系起来 以下是我认为到目前为止所知道的 以 IA
Assembly
memory
x86
memoryalignment
lowlevel
共同的初始序列和比对
在思考反例时这个问题 https stackoverflow com q 21499120 420683 我想出了 struct A alignas 2 char byte 但如果这是合法和标准布局 它的布局是否与此兼容struct B s
c
C11
unions
memoryalignment
standardlayout
到底什么是“对齐指针”?
有人可以告诉我什么是对齐指针实际上意味着什么 这意味着所指向的地址可以被某个因子整除 有时使用术语 自然对齐 这通常意味着具有自然对齐的对象需要放置在可被对象大小整除的地址处 对齐有时非常重要 因为许多与硬件相关的事物都对这种对齐设置了限制
c
memoryalignment
Java类的内存对齐
假设我在 64 位机器上编译 C 程序gcc 我假设sizeof int 是 8 个字节 并且sizeof char 是1字节 由于内存对齐 以下结构 struct example int a char c 实际上大小不是 9 个字节 而是
Java
memoryalignment
x86 操作码对齐参考和指南
我正在 JIT 编译器中动态生成一些操作码 并且正在寻找操作码对齐的指南 1 我读过一些评论 简短地 建议 通过在调用后添加 nops 进行对齐 2 我还阅读了有关使用 nop 来优化序列以实现并行性的内容 3 我读到操作对齐有利于 缓存
Assembly
x86
x8664
memoryalignment
microoptimization
任意解引用指针的输出
我将内存填充如下 char buf 8 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 然后将 unsigned long 指针依次放在前 5 个字节上并输出结果 char c ptr unsigned lo
c
pointers
x86
arm
memoryalignment
如何使用alignof强制堆分配对齐?
我想强制特定的堆分配返回 64 字节对齐的地址 因为这是缓存行边界 我以为我可以这样做 int p new alignas 64 int 但我的编译器似乎都没有给出p64 的倍数的地址 这是我检查的方法 include
c
C11
memoryalignment
为什么malloc是16字节对齐的?
The GNU文件指出malloc在 64 位系统上与 16 字节倍数对齐 为什么是这样 如果我的理解是正确的 寄存器和所有指令都对最大 8 字节宽的值进行操作 因此 似乎需要 8 字节对齐 Notes 我找到了一些理由来解释为什么堆栈指针
c
memory
x8664
memoryalignment
MARS MIPS 模拟器的内置汇编器比要求的对齐程度更高?
我有以下数据段 data a byte 0x11 align 1 b word 0x22334455 假设地址 a 为 0x10010000 则 b 处字的预期地址为 0x10010002 但 MARS 将字存储在 0x10010004 忽
Assembly
MIPS
memoryalignment
marssimulator
«
1
2
3
4
5
»