使用char *來編寫內存訪問的跨平臺代碼時,是否有任何缺陷?編寫跨平臺代碼時使用char *而不是void *的任何缺陷?
更新:例如,如果地址與該類型的大小對齊,我應該在將一個解除引用的char *轉換爲某種類型(比如int)之前進行檢查?某些體系結構會在未對齊的訪問中返回奇怪的結果嗎?
我正在研究一個播放內存分配器,以更好地瞭解如何調試內存問題。我曾經認爲char *是可取的,因爲它能夠進行指針運算,並將它們解除引用void *,這是真的嗎?以下假設是否始終適用於不同的通用平臺?
sizeof(char) == 1
sizeof(char*) == sizeof(void*)
sizeof(char*) == sizeof(size_t)
除非你解除引用'char'實例,否則你將不得不將'char *'和'void *'同時指向它們指向的任何類型。 – Aesthete
不知道它是否'有保證',但以我的經驗來看,前2個應該是安全的。最後一個...??。 – vdbuilder