我听说malloc()
根据分配的类型对齐内存。例如,从《理解和使用C指针》一书中:
如果我遵循,这意味着int *integer=malloc(sizeof(int));
将分配在地址边界上,该边界可以被4整除。即使没有在malloc上强制转换(int *)
。
我当时在聊天服务器上工作;我读到了带有struct
的similar effect。
我不得不问:从逻辑上讲,什么是地址边界本身可分割的关系为何?使用地址n*sizeof(int)
上的整数将一组内存分配给129
怎么办?
我知道*(integer+1)
指针算法的工作原理,但是我无法确定边界的重要性...
最佳答案
如果您在谈论malloc
,这是错误的。 malloc
不在乎您如何处理数据,并将分配对齐的内存以适合最严格的 native 类型。
从标准:
和:
由于底层计算机的工作原理,访问未对齐的数据可能会更昂贵(例如x86)或非法(例如arm)。这使硬件可以采用捷径来提高性能/简化实现。
关于c++ - 为什么Malloc()关心边界对齐?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23575489/