gpt4 book ai didi

c++ - 这段代码不应该崩溃吗

转载 作者:可可西里 更新时间:2023-11-01 18:41:24 26 4
gpt4 key购买 nike

int *p;
while(true)
{
p = new int;
}

由于内存空间不足,这段代码不应该崩溃。我已经尝试打印出 p 的值,即 p 所在的内存地址,它似乎在增加但没有崩溃。

为什么会这样?

最佳答案

此解决方案就像试图以 1MPH 的速度行驶时撞到街道上的电线杆上的汽车。它最终会发生,但如果你想要快速的结果,你需要稍微加快速度。

int *p;
while (true) {
p = new int[1024*1024*1024];
}

不过,我的回答是基于您使用标准 STL 分配器的代码库,该分配器会引发内存分配失败。还有其他可用的分配器,它们在分配失败时简单地返回 NULL。这种类型的分配器永远不会在此代码中崩溃,因为失败的分配不被认为是致命的。您必须检查 NULL 的分配返回以检测错误。

另一个警告,如果您在 64 位系统上运行,由于地址空间的大小增加,这可能需要相当长的时间才能崩溃。电话民意调查不是在大街上进行,而是在全国范围内进行。

关于c++ - 这段代码不应该崩溃吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4017343/

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