Я звоню sysctl()
для получения статистики в памяти и для аргумента void* oldVal
, я передаю указатель на двойной. Однако вместо того, чтобы установить двойное значение в правильное значение, оно просто устанавливает его на 0,00000Использование парного разряда в Unix?
Однако, когда я пытаюсь сделать то же самое с длинным, он устанавливает его в правильный stat. Почему двойное значение устанавливается равным 0,00000, а время устанавливается на правильный stat?
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 на долгий, он отлично работает. Есть ли в любом случае, я могу заставить двойник работать? Я хочу напрямую отправить в totalAmount
, а не отправлять длинный, а затем присваивать значение totalAmount
.
Я использую Objective-C/C, на Mac OS X Snowleopard с Xcode 3.2.6
Прочтите здесь код, чтобы узнать, как это сделать: http://www.opensource.apple.com/source/gcc/gcc-5484/libiberty/physmem.c –