gpt4 book ai didi

c - 我可以运行这个程序多少次

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

我有一台128M内存的机器,这是程序。

while(1)
{
ptr = malloc(1024 * 1024 * 100);
if (NULL == ptr)
{
printf("malloc 100M Failed\n");
return 1;
}
n+=100;
printf("malloc %dM\n", n);
}

我从输出中发现 malloc 运行了 20 次,为什么?

最佳答案

因为你的程序正在分配 virtual memory .在 32 位进程中(在 Windows 上 - 其他操作系统略有不同),您通常会获得 2GB 的虚拟地址空间来分配内存。操作系统在“交换文件”和物理内存之间映射该内存(在您的情况下,由于您只有 128MB 的物理内存,因此您分配的大部分内存将仅在交换文件中)。

所以 100MB * 20 =“大约”2GB,这就解释了为什么您可以运行 20 个循环。

关于c - 我可以运行这个程序多少次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3316539/

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