结构体内存分配:举例待续
2015-08-31 20:10
253 查看
定义结构体类型,系统不为之分配内存单元。
当使用结构体类型定义变量时,才开辟内存单元。
结构体在内存中所占的大小决定于两点:
1.编译器默认或指定对齐数;(eg:64为ubuntu14.04 默认8)
这个可通过 ‘#pragma pack(n)’来指定
2.(每个成员)实际有效对齐数,指的是所有成员中所占字节最大的那一个
最后边界对齐的大小取决于上面两个值中的较小的那一个
#include <iostream> using namespace std; //pack(n): n的值,必须是2的指数倍 #pragma pack(4) struct B{ int a;// 4 double b;// 8 short c;// 4 }; //定义结构体类型 struct A //我的指定对齐数为4 { //char name[3]; // 3 1 short name[3]; // 6 2 }; int main() { cout << "sizeof(A): " << sizeof(A) << endl; //cout << "sizeof(B): " << sizeof(B) << endl; return 0; }
相关文章推荐
- 解析C语言中位字段内存分配的问题
- C语言编程中分配内存空间的相关函数
- C#字符串内存分配与驻留池学习分享
- 基于C++内存分配、函数调用与返回值的深入分析
- PHP变量内存分配问题记录整理
- 理解Javascript_01_理解内存分配原理分析
- C/C++语言中结构体的内存分配小例子
- C/C++动态分配与释放内存的区别详细解析
- JavaScript对内存分配及管理机制详细解析
- Java中内存分配的几种方法
- 关于操作系统各种数据类型的内存分配的一点探讨
- VMware内存分配初探
- java内存管理
- JAVA中堆栈和内存分配
- C中动态分配内存
- sizeof(struct)内存分配分析
- Java堆栈的区别
- 深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
- new(p) T1(value)
- 程序运行时的三种内存分配