2015-01-26 87 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