类打包和对齐

发布于 2024-11-05 07:51:22 字数 155 浏览 1 评论 0原文

在 GCC 编译器中不带参数调用 #pragma pack() 的对齐方式是什么?

另外,我经常看到当我们使用placement new创建对象时,class经常被打包。这是什么原因呢?有必要这样做吗?

What is the alignment for calling #pragma pack() with no argument in GCC compiler?

Also, I often see that when we use placement new in creating object, the class is often being packed. What is the reason for that? Is it necessary to do so?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧竹 2024-11-12 07:51:22

对于第一部分,您可以鲁莽地使用谷歌: http://gcc.gnu .org/onlinedocs/gcc/Structure_002dPacking-Pragmas.html

其次,有时您可能需要控制类的二进制格式。您可能需要管理内存量和数据结构的实际二进制偏移量:

struct
{
  char c;
  int i;
};

根据所使用的机器类型和编译指示包,可能使用 8 字节内存或 5 字节内存。

for the first part, you could have recklessly used google: http://gcc.gnu.org/onlinedocs/gcc/Structure_002dPacking-Pragmas.html

secondly there may be times when you need to control the binary format of your class. you may need to manage the amount of memory and the real binary offsets of data structures:

struct
{
  char c;
  int i;
};

may use 8 bytes of memory or 5 bytes of memory, according to machine type and pragma pack used.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文