Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
如何使用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
对齐装配 x86
我无法理解align 我尝试运行以下命令 section data align 4 xs dw 0xA1A2 ys db 0xB1 0xB2 0xB3 0xB4 看看每个字节是什么 我希望它是内存中的一个连续块 如下所示 for insta
Assembly
x86
nasm
memoryalignment
arm64 上的 Linux:从 mmapped 相干 DMA 缓冲区发送数据时,sendto 导致“未处理的故障:对齐故障 (0x96000021)”
我正在构建一个基于配备arm64 CPU的UltraScale FPGA的数据采集系统 数据通过DMA传输到RAM 驱动程序中的 DMA 缓冲区保留如下 virt buf i dma zalloc coherent pdev gt dev
Linux
memoryalignment
ARM64
DMA
在armv8架构中将半字值存储到堆栈内存中时出现总线错误?
我有两个寄存器 w1 和 w2 我想将它们存储在堆栈上 我想将完整的单词w1和w2的一半存储到堆栈中 这是我的实现 STR w1 sp 8 STRH w2 sp 8 编译时 第一条指令运行良好 但第二条指令引发总线错误 我知道这是一些对齐问
Assembly
ARM64
memoryalignment
buserror
stackpointer
YASM:vmovaps 指令导致分段错误
Problem movaps给我一个分段错误 Context x86 64指令vmovaps设计用于与 Core i 系列处理器 我正在运行该系统 上的 AVX 寄存器一起使用 AVX 寄存器的宽度是 SSE 寄存器的两倍 分别为 256
Assembly
x8664
nasm
memoryalignment
avx
结构对齐填充、填充的最大尺寸以及结构成员的顺序
自从我发现我的 sizeof 运算符没有返回我期望的结果以来 我一直在学习结构数据填充 根据我观察到的模式 它将结构成员与最大的数据类型对齐 那么例如 struct MyStruct1 char a 1 byte char b 1 byte
c
struct
padding
memoryalignment
为什么由 char、short 和 char(按顺序)组成的结构体在启用 4 字节打包的 C++ 中编译时会变成 6 字节结构体?
我以为我理解 C C 如何处理结构成员对齐 但对于 Visual Studio 2008 和 2010 中的特定安排 我得到了奇怪的结果 具体来说 我发现由 char short 和 char 组成的结构被编译为 6 字节结构 即使启用了
c
visualc
struct
packing
memoryalignment
malloc如何理解对齐?
以下摘自here pw widget malloc sizeof widget 分配原始存储 事实上 malloc 调用分配存储空间 那足够大了并且适当对齐以固定物体类型的 小部件 另见快速实现他从赫伯 萨特那里说 结盟 任何内存对齐 任何
c
memoryalignment
如何使 tr1::array 分配对齐内存?
您可以分配一个 std vector 它通过定义自己的分配器来分配对齐的堆内存 您可以使用 declspecalign 在堆栈上分配 C 样式数组 但是你能声明一个 tr1 array 来保证索引零处的元素对齐吗 tr1 array and
c
Arrays
STL
tr1
memoryalignment
处理器如何读取内存?
我正在尝试重新实现 malloc 我需要了解对齐的目的 据我了解 如果内存对齐 代码将执行得更快 因为处理器不必采取额外的步骤来恢复被剪切的内存位 我想我明白 64 位处理器读取 64 位乘 64 位内存 现在 让我们想象一下我有一个按顺序
c
CPU
cpuarchitecture
memoryalignment
lowlevel
MinGW64 无法进行 32 字节堆栈对齐(Windows x64 上的 AVX 所需),轻松解决或切换编译器?
我正在尝试使用 AVX 指令和 Windows 64 位 我对 g 编译器很满意 所以我一直在使用它 但是 报告了一个大错误here并提出了非常粗略的解决方案here 基本上 m256 变量无法在堆栈上对齐才能与 avx 指令一起正常工作
Windows
gcc
mingww64
memoryalignment
avx
是否保证 Complex Float 变量在内存中按 8 字节对齐?
在 C99 中定义了新的复杂类型 我试图了解编译器是否可以利用这些知识来优化内存访问 这些物体是 A F 类型complex float保证在内存中8字节对齐 include complex h typedef complex float
gcc
C99
compileroptimization
memoryalignment
complexnumbers
为什么 C 编译器不能重新排列结构成员以消除对齐填充? [复制]
这个问题在这里已经有答案了 可能的重复 为什么 GCC 不优化结构 为什么C 不让结构更紧凑呢 请考虑 32 位 x86 计算机上的以下示例 由于对齐限制 以下结构 struct s1 char a int b char c char d
c
struct
compileroptimization
memoryalignment
为什么 Mac ABI 要求 x86-32 进行 16 字节堆栈对齐?
我可以理解旧的 PPC RISC 系统甚至 x86 64 的这种要求 但是对于旧的久经考验的 x86 呢 在这种情况下 堆栈只需在 4 字节边界上对齐 是的 一些 MMX SSE 指令需要 16 字节对齐 但如果这是被调用方的要求 那么它应
MacOS
memoryalignment
callstack
callingconvention
ABI
是否有 GCC 关键字允许结构重新排序?
我知道为什么 GCC 默认情况下不重新排序结构的成员 但我很少编写依赖于结构顺序的代码 那么有什么方法可以将我的结构标记为自动重新排序吗 以前的 GCC 版本有 fipa struct reorg option允许结构重新排序 fwhole
c
gcc
padding
C99
memoryalignment
使用 C++11 的 MinGW 和打包结构对齐
对于下面的结构 actual 没有填充 结构的大小为 54 在具有 MinGW GCC 4 8 1 x86 64 的 64 位 Windows 7 机器上 我得到sizeof BMPHeader 为56 这是可以理解的 根据BMP文件格式的
C11
struct
g
MinGW
memoryalignment
在固定不同 CPU 的 2 个线程之间传递一些变量的最佳方式
我有一个问题需要了解是否有更好的解决方案 我编写了以下代码 将一些变量从编写器线程传递到读取器线程 这些线程固定到共享相同 L2 缓存的不同 CPU 禁用超线程 writer thread h struct a few vars uint3
c
x86
intel
memoryalignment
cpucache
内存对齐的目的
不可否认 我不明白 假设您有一个内存 其内存字长度为 1 字节 为什么不能在未对齐地址 即不能被 4 整除 上的单次内存访问中访问 4 字节长的变量 就像对齐地址的情况一样 现代处理器上的内存子系统仅限于以其字大小的粒度和对齐方式访问内存
memory
Alignment
memoryalignment
«
1
2
3
4
5
»