相关疑难解决方法(0)

C结构中的内存对齐

我正在使用32位机器,所以我认为内存对齐应该是4个字节.说我有结构:

typedef struct {
    unsigned short v1;
    unsigned short v2;
    unsigned short v3;
} myStruct;
Run Code Online (Sandbox Code Playgroud)

实际大小是6个字节,我想对齐大小应该是8,但sizeof(myStruct)返回6.

但是,如果我写:

typedef struct {
    unsigned short v1;
    unsigned short v2;
    unsigned short v3;
    int i;
} myStruct;
Run Code Online (Sandbox Code Playgroud)

实际大小是10个字节,对齐是12,这次sizeof(myStruct) == 12.

有人可以解释一下有什么区别吗?

c c++ memory-alignment structure-packing

53
推荐指数
5
解决办法
4万
查看次数

C++ ABI问题列表

我已经看到很多关于C++如何没有标准ABI的讨论与C一样.我很好奇究竟是什么问题.到目前为止,我已经想到了

  1. 名字错误
  2. 异常处理
  3. RTTI

还有其他与C++有关的ABI问题吗?

c++

43
推荐指数
4
解决办法
9210
查看次数

标签 统计

c++ ×2

c ×1

memory-alignment ×1

structure-packing ×1