除非使用 cout,否则代码不会执行
Code won't execute unless cout is used
我编写了一个非常简单的程序,以了解在内存中分配许多对象时它的行为。它运行得很好,如果有足够的时间,它将消耗我计算机的所有内存,除非删除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, Release, x64, Static Crt
编辑:我在工作时匆忙发布了这个问题,很抱歉粗心大意。
没有 std::cout
行,打开优化,编译器确定有一个更快的算法,相当于你写的逻辑。
更快的算法是"do nothing"。
注意:这是可能的,因为您的编译器假设"内存不足"场景不是期望的副作用。因此,更快的算法是有效的,即使它降低了内存耗尽的可能性。
相关文章:
- 以下代码执行哪种内存分配(动态或静态)?
- 允许多个互斥锁所有者或指定数量的并发代码执行
- 使用 execv 从C++代码执行的 Linux 脚本失败
- 由于找不到cpprest_2_10.dll,代码执行无法继续
- 在每次循环迭代时停止代码执行毫秒
- 与Java相比,为什么此C 代码执行速度如此慢
- 记录组件代码执行
- 相同的代码执行两次:性能差异
- 代码执行/CPU 速度每 2 秒减慢一次
- 函数返回本地变量,尽管变量不超出范围,没有编译器问题,并且代码执行
- 如何将字符串从C++DLL返回到MetaTrader 4代码执行生态系统?
- 当我从java代码执行C++时不显示任何输出
- C++和共享库中的代码执行点
- 递归期间代码执行中断
- 为可选的评测代码执行进行高效设计
- 我正在尝试使用 ifstream 将此 C 函数的等效代码执行到 c++ 中
- 最佳C 11测量嵌入式系统代码执行时间的方法
- 如何在iOS应用程序中锁定代码执行
- 中断代码执行
- 是否有一个工具来记录代码执行