惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 聂微东
博客园 - 【当耐特】
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
C
Check Point Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
美团技术团队
WordPress大学
WordPress大学
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
IT之家
IT之家
T
Tailwind CSS Blog
月光博客
月光博客
Vercel News
Vercel News
V
V2EX
Engineering at Meta
Engineering at Meta
B
Blog
Stack Overflow Blog
Stack Overflow Blog
A
About on SuperTechFans
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
腾讯CDC
I
InfoQ

博客园 - 鬼谷子com

2026年国内主流AI Coding Plan套餐全对比|开发者避坑指南 图解 | 你管这破玩意儿叫TCP?(转载) C++ static_cast、dynamic_cast、const_cast和reinterpret_cast(四种类型转换运算符) Qt内部的d指针和q指针手把手教你实现 C++中虚函数、虚继承内存模型 c++11新特性实战(二):智能指针 windows下使用mingw和msvc静态编译Qt5.15.xx Qt moc元对象编译器的原理和场景(反射) c++11新特性实战 (一):多线程操作 抽象工厂模式(c++实现) 迭代器模式(c++实现) 中介者模式(c++实现) 享元模式(c++实现) 代理模式(c++实现) 状态模式(c++实现) 建造者模式(c++实现) 职责链模式(c++实现) 命令模式(c++实现) 模板方法模式(c++实现)
c++结构体内存对齐
鬼谷子com · 2020-12-09 · via 博客园 - 鬼谷子com

c++结构体内存对齐

基本概念:

各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数, 各成员变量在存放的时候根据在结构中出现的顺序依次申请空间 同时按照上面的对齐方式调整位置。 空缺的字节自动填充, 同时为了确保结构的大小为结构的字节边界数(即该结构中占用最大的空间的类型的字节数)的倍数,所以在为最后一个成员变量申请空间后 还会根据需要自动填充空缺的字节;

举例说明:

#include <iostream>

using namespace std;

#pragma pack(8)
struct Test1
{
    char a; //0 - 1
    short b;//2 - 3
    int c;// 4 - 7
    float d;//8 - 11
    double e;//12 - 23
};

#pragma pack(4)
struct Test2
{
    char a; //0 - 1
    short b;//2 - 3
    int c;// 4 - 7
    float d;//8 - 11
    double e;//12 - 19
};

#pragma pack(8)
struct Test3
{
    double e;//0-7
    float d;//8-13
    short b;//14-15
    int c;// 16-19
    char a; //20-23
};

int main()
{
    std::cout << "size test1= " << sizeof(Test1) << std::endl;
    std::cout << "size test2= " << sizeof(Test2) << std::endl;
    std::cout << "size test3= " << sizeof(Test3) << std::endl;
    return 0;
}