我在msdn中阅读了这篇文章,我想知道为什么有一个内部编译器堆栈持有这个aligment?我的意思是只有5个值可以设置为打包对齐为什么要存储它们?甚至可以选择分配标识符。你为什么要这样做?好奇。
答案 0 :(得分:1)
头。请考虑以下.cpp文件:
#pragma pack(16)
#include <stdlib.h>
<stdlib.h>
标头定义了受#pragma pack
影响的类型,#pragma pack
会破坏这些类型的定义,导致未定义的行为和难以诊断的运行时错误
我们在<stdlib.h>
中通过推送打包,将其重置为一个众所周知的包装,并在文件末尾弹出原始包装来防止这种情况。其他库和SDK的标题可以做类似的事情来抵御这种情况。