Pil*_*Dev 0 c memory heap memory-leaks
我为一个简单的测试编写了一个简单的代码.
#include <stdio.h>
typedef struct
{
    void* Data;
}List;
void x()
{
    getchar();
    int i;
    List* myList[100000];
    for(i = 0; i < 100000; i++)
    {
        myList[i] = (List*)malloc(sizeof(List)*1024*1024);
    }
    getchar();
    for(i = 0; i < 100000; i++)
    {
        free(myList[i]);
    }
}
int main()
{
    x();
    getchar();
    return 0;
}
我看过"taskmgr"中的程序,我看过: - 540K - 4.500K - 544K(什么是4K差异?)
如果您的所有分配都成功,您将使用大约100000 * 1024 * 1024 * sizeof (List)字节,这是(假设List是4个字节,32位指针)略超过390 GB.
由于您引用的数字要低得多,因此可以安全地假设并非所有分配都实际成功.实际上,很难想象它们都会在32位系统上取得成功......无论如何,你的代码永远不会检查它,所以很难说.
课程:malloc()可能会失败,如果您不检查返回值,则无法认为分配已成功.