如何安全地讀取一個void作爲int指向char?如何安全地讀取指向char的void *作爲int?
示例:測試系統中字符的第一位,其中8位字符訪問速度比32位字節慢得多。
char c = 'B'; // a char here to illustrate the potentially dangerous case, but the
// point is this could be a char, could be an int... I am just
// interested in the first bit
void *v = &c;
int i = *(int *)v;
if (i & 0x01)
{
printf("yep");
}
似乎工作,但如果我的字符(C)是正確的,在分配給此進程的有效記憶的邊緣,這將是讀入無效的內存?還是系統足夠聰明,可以在前8位之後停止複製?
感謝
讀取8位字符將至少與讀取32位int相同。*寫作*可能不會,但這是一個不同的問題。 – Roddy
1.在C++或C之間選擇2.猜測它是C,因爲調用了printf。 3.避免void指針。你正在進入空白/黑洞 –
4.不要使用C風格的演員(如果這是C++) – olevegard