使用免费的,当内存使用量并没有减少?(Memory usage isn't decreasi

2019-07-22 12:16发布

不知怎的,这个调用free()不工作。 我跑在Windows上的应用程序,并随后使用在任务管理器的内存,但看到内存的使用没有减少,来电后free()

int main(int argc, char *argv[])
{
    int i=0;
    int *ptr;

    ptr = (int*) malloc(sizeof(int) * 1000);

    for (i=0; i < 1000; i++)
    {
        ptr[i] = 0;
    }

    free(ptr); // After this call, the program memory usage doesn't decrease

    system("PAUSE");

    return 0;
}

Answer 1:

典型的C实现不返回自由:d内存操作系统。 它可用于通过使用同一程序,而不是别人。



Answer 2:

你不能假设只是在做后free内存将被返回到OS。 一般的CRT实现有一定的优化,因为其中可能无法立即返回此内存。 这使得CRT分配更快的方式随后的内存分配请求。



Answer 3:

请注意,任务管理器将显示内存从系统的libc“借来的”。 但并不是所有的mallocs将通过libc中的操作系统,同样不是所有的自由会释放系统内存。

通常情况下,会的libc在更大的块分配内存提供了几个电话的malloc。



文章来源: Memory usage isn't decreasing when using free?