关于C malloc()的请教....

在WINDOWS 64bits 下
执行:
#include
#include

int main(void)
{
    void *vp;
    int count=0;
    while(  ( vp=malloc(100*1024*1024) )  )
    {
        count++;
    }
    printf("已经分配%d00 MB 内存空间 \n",count);

    getchar();
    return 0;
}
运行结果:  已经分配5100 MB(每次运行的结果都不一样。) 内存空间。、
为什么在4G内存下可以分配5100MB内存空间?难道是缓存?
怎样精准的计算导致内存信息泄漏?5100是怎样来的?这两个问题之间有什么联系吗?

Windows 平台下,确实有可能是虚拟内存;像 WinCE 下,就没有这种现象。

精准的计算导致内存信息泄漏,可以通过对已使用和未使用的内存数值进行检控来实现。
自己写代码:如何:调查进程的内存使用情况.aspx "如何:调查进程的内存使用情况")
或通过如下的方法:内存的使用与windows 内存监控

我记得这个函数每次只能分配最大64K内存

Windows 平台下,确实有可能是虚拟内存;像 WinCE 下,就没有这种现象

首先我确实没有这么试过。
你可以尝试下把每次分配的内存地址打印出来看看。