gpt4 book ai didi

c - 影响其他程序的堆溢出

转载 作者:太空狗 更新时间:2023-10-29 15:21:24 26 4
gpt4 key购买 nike

我试图为 malloc 返回 NULL 指针创造条件。在下面的程序中,虽然我可以看到 malloc 返回 NULL,但是一旦程序被强制终止,我看到所有其他程序都变得很慢,最后我不得不重新启动系统。所以我的问题是堆内存是否与其他程序共享?如果没有,其他程序应该不会受到影响。操作系统在执行时是否没有分配一定数量的内存?我正在使用 Windows 10,Mingw。

#include <stdio.h>
#include <malloc.h>

void mallocInFunction(void)
{
int *ptr=malloc(500);
if(ptr==NULL)
{
printf("Memory Could not be allocated\n");
}
else
{
printf("Allocated memory successfully\n");
}
}


int main (void)
{
while(1)
{
mallocInFunction();
}

return(0);
}

最佳答案

So my question is whether the memory for heap is shared with other programs?

物理内存 (RAM) 是所有进程共享的资源。操作系统决定为每个进程分配多少 RAM,并随着时间的推移进行调整。

If not, other programs should not have affected. Is OS is not allocating certain amount of memory at the time of execution?

在程序开始执行时,操作系统不知道程序需要或需要多少内存。相反,它处理发生的分配。除非另有配置,否则它通常会尽一切可能使程序的分配成功,因为程序正在做它正在做的事情可能是有原因的,操作系统不会尝试猜测它。

关于c - 影响其他程序的堆溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44403550/

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