【发布时间】:2012-02-13 23:17:16
【问题描述】:
我正在调用 sysctl() 来检索内存统计信息,对于 void* oldVal 参数,我正在传递一个指向双精度的指针。但是,它没有将双精度设置为正确的值,而是将其设置为 0.00000
但是,当我尝试使用 long 执行完全相同的操作时,它会将其设置为正确的统计信息。为什么将 double 设置为 0.00000 而 long 设置为正确的统计数据?
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而不是发送一个long然后将值分配给totalAmount。
我在带有 Xcode 3.2.6 的 Mac OS X Snowleopard 上使用 Objective-C/C
【问题讨论】:
-
阅读这里的代码,看看应该怎么做:opensource.apple.com/source/gcc/gcc-5484/libiberty/physmem.c
标签: objective-c c macos unix