我有以下代碼:差異數據對準
int byte_align(void * ptr)
{
int power = 2, n = 1, result = 0;
size_t address = reinterpret_cast<size_t>(ptr);
while(address%power == 0)
{
power *=2;
result = n;
n++;
}
return result;
}
當我執行該功能(與-O3在Ubuntu編譯克++ 4.6),I得到有關每個雙變量運行不同的值(4,5,7,8)。爲什麼?在另一臺具有相同操作系統和相同編譯器的PC上,結果總是3。
這些結果有什麼其他可能的原因?
謝謝!
你正在編譯32位還是64位? –
你作爲ptr傳遞什麼? – Reunanen
@Pukku:我通過一個地址加倍,例如'double x; func(&x);' –