gpt4 book ai didi

c++ - 除非使用 cout,否则代码不会执行

转载 作者:行者123 更新时间:2023-11-30 02:38:46 25 4
gpt4 key购买 nike

我编写了一个非常简单的程序来查看在内存中分配多个对象时它的行为。它运行良好,如果有足够的时间,它将消耗我计算机的所有内存,除非删除 cout 语句。如果没有该行,程序将在初始化后立即退出。为什么?

代码:

#include <iostream>

class Test
{
long long test1[10];
long long test2[10];
long long test3[10];
long long test4[10];
long long test5[10];
};

int main()
{
for (int i = 0; i <= 500000; ++i)
{
new Test;
new Test;
new Test;
new Test;

std::cout << i << "\n"; // Program won't work as desired without this
}
return 0;
}

设置:Visual Studio 2013,发布,x64,静态 Crt

编辑: 上类时匆忙发了这个问题,抱歉粗心了。现在是对的。

最佳答案

没有 std::cout 行并且打开了 优化,您的编译器确定有一个更快的算法 这等同于您编写的逻辑。

更快的算法是“什么都不做”


注意:这是可能的,因为您的编译器假设“内存不足”场景不是预期的副作用。因此,更快的算法是有效的,即使它降低了内存不足的可能性。

关于c++ - 除非使用 cout,否则代码不会执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30463633/

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