0
假設我有一個有效的指針p0
:將指針轉換爲整數,遞增該整數並投回是否安全?
T a[10];
T* p0 = &a[0];
我知道,我可以放心地往返投這樣的:
reinterpret_cast<T*>(reinterpret_cast<uintptr_t>(p0)) == p0;
但是,它的安全做到以下幾點?
T* p1 = reinterpret_cast<T*>(reinterpret_cast<uintptr_t>(p0) + sizeof(T));
即,我可以確定沒有UB,並且p1 == &a[1]
?
你是什麼意思「我可以確定沒有無符號字節」? *哪裏*? – theV0ID
@ theV0ID UB是C++世界中未定義行爲的流行縮寫。 – bashrc
我敢肯定,在字地址系統上會失敗,通過'n'遞增地址使得地址進一步指向'n * wordsize'字節。 – user2357112