나는 다음과 같은 코드를 가지고 : 나는 (g ++ 4.6과 우분투 -03 컴파일)이 기능, 나는 각 이중 변수 수를 실행차이
이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;
}
다른 값을 실행을 (4, 5, 7, 8). 왜? 동일한 OS 및 동일한 컴파일러를 가진 다른 PC에서 나는 결과적으로 항상 3을 얻습니다.
이러한 결과에 대한 다른 가능한 이유는 무엇입니까?
감사합니다.
32 비트 또는 64 용으로 컴파일하고 있습니까? –
ptr로 무엇을 전달합니까? – Reunanen
@Pukku : 주소를 두 배로 전달합니다 (예 : 'double x; func (&x);' –