2012-11-16 71 views
1
uint8_t *bufferPtr=NULL; 
size_t bufferPtrSize=0; 
bufferPtr=malloc(bufferPtrSize * sizeof(uint8_t)) 

我在File1.m中使用了相同的代碼,它工作正常。當我在File2.mm上使用它時,它給我assigning to 'uint8_t *' (aka 'unsigned char *' ) from incompatible type 'void *'錯誤。從不兼容類型'void *'分配'uint8_t *'(aka'unsigned char *')'

+0

哇,一個新的記憶功能稱爲'mallioc'!一定很棒。你的實際代碼是正確的? – borrrden

+0

@borrrden是我從File1複製到File2的相同代碼 – onkar

+0

有大量的拼寫和代碼格式錯誤,我希望你也不要複製這些錯誤。 – borrrden

回答

4

這是因爲.mm文件不被視爲正常的Objective-C文件,而是作爲Objective-C++文件處理,因此C++的類型規則適用於此處。在C++中,如果你決定有一個類型(在這種情況下你有一個void指針),然後想要另一個類型(在你的情況下是一個char指針),那麼你必須明確地轉換它們。執行此操作的方法是static_cast<T>(),其中T是目標類型。即:uint8_t *bufferPtr = static_cast<uint8_t *>(malloc(bufferPtrSize * sizeof(uint8_t)));

相關問題