2012-11-19 26 views
1

我正在嘗試使用下面的表達式將內存重新分配給我的表。但是我總是收到下面的錯誤消息。請告訴我。如何對下面的表達式進行類型轉換

typedef char *OFAttribs[6]; 
OFAttribs *tmp = realloc(pTable, sizeof(*tmp) * (nTableLen+1)); 

Error: invalid conversion from âvoid*â to âchar* (*)[6]â 
+0

你鍵入了一個指向數組的指針。數組本質上也是指針。所以你的類型是一個指針指針。然後你聲明瞭這個類型的指針。你確定這就是你想要的嗎? –

+0

@AE:數組不是*指針,這裏的'OFAttribs'類型絕對不是指向指針的指針。 – caf

+0

@caf如果你嘗試編譯'int a [2]; int b = a;'作爲C++,你會從gcc無效轉換'int *'到'int'中得到以下錯誤。所以在這種情況下,'a'確實是一個指向int的指針。 –

回答

2

試試這個:

OFAttribs *tmp = (OFAttribs*) realloc(pTable, sizeof(*tmp) * (nTableLen+1)); 
2

還有你的代碼是有效C.你確定你是不是誤用C++模式,其中void *不隱式轉換爲其他指針類型編譯?

相關問題