C++ 内存对齐问题
struct P1{
int a;
char b;
int c;
char d;
};
struct P2{
struct P1 a[2];
struct P1 * b;
};这个代码的P2的结构体的sizeof的大小是36,也就是说P2结构体的对齐的字长是4个字节
但是,我个人记得struct结构体的字长根据最大的结构体元素进行设置的,也就是最长的结构体进行对齐,那以我的理解,P2的对齐的字长应该是P1(16)的长度啊。。。
然后,现在我又知道结构体的对齐的字长是根据基本数据结构进行对齐的,也就是 char short int double,那这里为什么选择4呢,我知道struct P1*是指针,指针是4个字节,但是如果按基本数据类型,同时考虑P2的第一个元素大小太大,他不应该是选择最大的基本数据类型的大小么?
如果是
struct P1{
double a;
char b;
};这个的大小是16,也就是选择了duoble。。。
...全文
相关推荐
c++内存中字节对齐问题详解
### C++内存中字节对齐问题详解#### 一、什么是字节对齐,为什么要对齐?
关于C++内存中字节对齐问题的详细介绍
"关于C++内存中字节对齐问题的详细介绍"C++中的字节对齐是指在内存分配时,变量或数据结构的成员按照特定的规则对齐到某个边界上,以满足硬件平台的要求和提高数据存取的效率。这涉及到计算机体系结构、
C语言、C++内存对齐问题详解
内存对齐是编程中一个重要的概念,特别是在C和C++这样的低级语言中。它涉及到计算机硬件、编译器和程序性能优化等多个方面。本文将深入解析C语言和C++中的内存对齐问题。
C++面试题之结构体内存对齐计算问题总结大全
内存对齐是C++编程中一个重要的概念,尤其是在处理数据结构和效率时。它涉及到如何在内存中存储数据,以确保快速访问和节省空间。在面试中,理解内存对齐的原理和计算方法是非常关键的。
cpp-umalloc一个小型的Unix动态内存分配器库
**内存对齐**:确保分配的内存满足特定的对齐要求,以适应各种数据类型的存储需求。3. **内存统计**:提供内存使用情况的统计信息,帮助开发者监控和调试内存泄漏问题。4.


