sysctl()
을 호출하여 mem 통계를 검색하고 void* oldVal
인수에 대해 double에 대한 포인터를 전달하고 있습니다. 그러나 double을 올바른 값으로 설정하는 대신 0.00000Unix에서 Doubles를 사용 하시겠습니까?
으로 설정합니다. 그러나 정확히 동일한 것을 long으로 시도하면 정확한 값으로 설정됩니다. 왜 double이 정확한 stat로 설정되어있는 동안 0.00000로 설정되어 있습니까?
int systemInfoNeeded[2] = {CTL_HW, HW_PHYSMEM};
size_t sizeOfBuffer = sizeof(totalAmount);
if (sysctl(systemInfoNeeded, 2, &totalAmount, &sizeOfBuffer, NULL, 0))
{
NSLog(@"Total memory stat retrieval failed.\n");
exit (EXIT_FAILURE);
}
totalAmount는 두 배입니다. 두 번째는 totalAmount의 유형을 길게 변경합니다. 완벽하게 작동합니다. 어쨌든 더블을 사용할 수 있습니까? 나는 long을 보낸 다음 totalAmount
에 값을 할당하는 대신 직접 totalAmount
을 보내려고합니다. 나는 3.2.6
어떻게해야하는지 보려면 코드를 읽으십시오. http://www.opensource.apple.com/source/gcc/gcc-5484/libiberty/physmem.c –