0
我一直在iOS的问题摔跤造成不正确的分配,从malloc获得的内存比我应该有一个CPP对象少。我最近发现这是由于两个翻译单元包括相同的标题,其中一个翻译单元沿其包含链的几个出现#pragma pack
。如何追溯#pragma pack?
现在,我不确定如何正确追溯到哪个文件正在使用它,并确保它修复它。我添加了一堆#pragma pack(show)
,并从顶部确定了违规文件(违规文件是导致其他文件具有相同包设置为1的文件)。我已经在Xcode中打开了该文件并对其执行预处理。
在大多数情况下,它看起来像代码设置打包默认(arm64上的8)。是否有任何工具可以帮助验证哪些是链中的罪犯?
我只有一个提示(包1的情况下,该包被设置为),它是iOS SDK的头文件。但即使它看起来没问题。
# 54 "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/usr/include/sys/kauth.h" 2 3 4
#pragma pack(1)
typedef struct {
u_int8_t sid_kind;
u_int8_t sid_authcount;
u_int8_t sid_authority[6];
u_int32_t sid_authorities[16];
} ntsid_t;
#pragma pack()