c++ - 在 C++ 中更有效地分配 struct 的内存

标签 c++ struct

我正在尝试用 C++ 构造一个结构,如下所示:

struct kmer_value {
    uint32_t count : 32;
    uint32_t  path_length : 32;
    uint8_t acgt_prev : 4;
    uint8_t  acgt_next : 4;
}

该结构目前占用 12 个字节的内存,但我想将大小减小到 9 个字节。有什么办法可以实现吗?

谢谢。

最佳答案

没有可移植的解决方案。对于 GCC,这将是

struct __attribute__((packed)) kmer_value {
  uint32_t count : 32;
  uint32_t path_length : 32;
  uint8_t acgt_prev : 4;
  uint8_t acgt_next : 4;
};

在MSVC中#pragma pack可以达到同样的效果。

查阅编译器的文档。

关于c++ - 在 C++ 中更有效地分配 struct 的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44857029/

相关文章:

c - 如何从 C 中的函数返回多个类型?

c# - 在 C# 中使用结构来获取简单的域值

c - 在结构中引用结构,在函数中引用结构

C++ 字符串对象数组的选择排序

c++ - 求和和 X 的计数

c++ - 初始化C++基类,而无需两次键入整个基类类型

C++ std::指向结构的指针列表

c++ - 奇怪的段错误

c++ - 如何在容器中存储(空)分配器而不占用大小?

c - 奇怪的结构包装