我打電話給sysctl()
來檢索mem統計信息,並且爲void* oldVal
參數,我傳入一個指向double的指針。然而,不是將double設置爲正確的值,而是將其設置爲0.00000在Unix中使用雙打?
但是,當我嘗試使用長整數完全相同的事物時,它會將其設置爲正確的狀態。爲什麼當長時間被設置爲正確的數據時,雙數被設置爲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是double。第二個我將totalAmount的類型改爲long,它完美的工作。無論如何,我可以得到雙倍工作?我想直接發送totalAmount
,而不是發送很長的時間,然後將值分配給totalAmount
。
我使用的Objective-C/C,在Mac OS X雪豹和Xcode 3.2.6
在此處閱讀代碼以瞭解應該如何完成:http://www.opensource.apple.com/source/gcc/gcc-5484/libiberty/physmem.c – 2012-02-13 23:36:12