2015-01-26 83 views
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() 

回答

0

正如我所说,经过预处理后的文件进行搜索时,我没能找到#pragma pack,这不是后不久,撤销其设置的任何实例。然而,我并不知道有另一种方式来设置包装,通过#pragma options align=(packed|reset)。事实证明,它并没有被撤销,但我正在寻找#pragma pack