gpt4 book ai didi

c - 这4K有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-04 05:19:18 24 4
gpt4 key购买 nike

我已经为一个简单的测试编写了一个简单的代码。

#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() 可能会失败,如果不检查返回值,就不能假定分配已成功。

此外,don't cast the return value of malloc() in C .

关于c - 这4K有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19427545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com