当前位置: 首页 > 知识库问答 >
问题:

视觉工作室 2017年 - 错误 MSB6006: “CL.exe”退出与代码 2

公孙芷阳
2023-03-14

使用可视化工作室2017构建项目,我遇到了这个错误:

错误msb 6006:“cl . exe”退出,代码为2。

以下是我的代码:

int main()
{
    const int WIDTH=800;
    const int HEIGHT=600;

    Bitmap bitmap(WIDTH, HEIGHT);

    unique_ptr<int[]> histogram(new int[Mandelbrot::MAX_ITERATIONS + 1]{ 0 });

    unique_ptr<int[]> fractal(new int[WIDTH*HEIGHT]{ 0 });
    //int fractal[WIDTH*HEIGHT]{ 0 };

    for (int y = 0; y < HEIGHT; y++) {
        for (int x = 0; x < WIDTH; x++) {
            double xFractal = (x - WIDTH / 2 - 200)*2.0 / HEIGHT;
            double yFractal = (y - HEIGHT / 2)*2.0 / HEIGHT;

            int iterations = Mandelbrot::getIterations(xFractal, yFractal);
            if (iterations != Mandelbrot::MAX_ITERATIONS) {
                histogram[iterations]++;
            }
            fractal[y*WIDTH + x] = iterations;
            uint8_t color = 256 * (double)iterations / Mandelbrot::MAX_ITERATIONS;
            color = color*color*color;
            bitmap.setPixels(x, y, color, color, color);
        }
    }

    bitmap.write("Mandelbrot.bmp");
    return 0;
}

问题似乎是分形数组的声明:

unique_ptr<int[]> fractal(new int[WIDTH*HEIGHT]{ 0 });

如果我注释(以及带有分形变量的其他行),代码编译得很好,如果我将唯一指针更改为正常的int数组,代码就会编译,但是当我调试它时它会引发异常,发出堆栈溢出的信号。

减少数组的大小可以解决问题,因此看起来程序没有足够的内存空间来运行。我在Google上搜索了很多,发现Deafolt将visual studio的堆栈大小限制为1MB(我可能错了),但我找不到如何在visual studio 2017中手动增加堆栈大小。有人能帮我吗?

编辑:这是完整的输出:

1个

1个

' studio \ 2017 \ Community \ VC \ Tools \ MSVC \ 14 . 11 . 25503 \ bin \ host x86 \ x86 \ cl . exe '

1个

帮助菜单,或打开技术支持帮助文件了解更多信息

信息1

Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(360,5):

错误MSB6006:"CL.exe"退出,代码为2.1。

" Fractal.vcxproj" -失败。

=========生成:0成功,1失败,0最新,0跳过========

共有1个答案

燕寒
2023-03-14

new int[N]{0}并不意味着“用零填充数组”,它实际上意味着通过将第一个元素设置为0来聚合初始化数组,并对其余元素进行值初始化(将其余元素设置为零)。例如,如果您编写<code>{1}。

由于您已经依赖于值初始化,因此最好从{0}中删除 0,顺便说一句,这也会使代码编译:

  std::unique_ptr<int[]> fractal(new int[WIDTH*HEIGHT] {});

至于你的原代码为什么编译不出来——这显然是Visual Studio 2017的bug。可以随意举报。

下面是重现该问题的一个简单应用程序:

int main()
{
  auto test = new int[200000]{1};
  delete[] test;
}
 类似资料:
  • 尝试在Windows 10上使用CMake和MSBuild构建TensorFlow时,运行MSBuild时出现以下错误: 所以我只收到一条错误消息,这只是告诉我cmd.exe已关闭,错误代码表明存在问题,但不是问题所在。那么,我该如何找出导致此问题的原因,以便解决它?

  • 这几天我试图解决这个问题,但还是没有成功。如果我建立发布版本没有proGuard然后一切都好。 我读了许多关于可能问题的话题,但对我来说没有任何帮助。到目前为止,我做了如下: Java最大堆大小-1G 一般Android-dontwarnorg.apache.http.**-dontwarnandroid.net.http.Android HttpClient -保持课堂秩序。支持多重索引。多索引

  • 我们使用的是visual studio 2015,并有以下字体:- 使用visual studio 2015 typescript编译器,这可以归结为:- 这很好,在chrome上运行良好,但是,我们希望它也能在ie10 / ie11上运行。 我相信我们需要“多填充”这个,以便将生成的js文件转换为es5。 目前visual studio中有什么可以做到这一点吗?这种转换的最佳方式是什么?或任何样

  • 我刚刚升级到Visual Studio 2017社区版,但在加载标准头文件时遇到了问题。我从各种头文件中得到507个错误。以下是一些片段: 一些错误: 我在Visual Studio 2015社区版中从未遇到过此问题。我是否缺少安装程序中的某些组件?任何帮助都将不胜感激。谢谢!

  • 我在Mac上。 : 当我尝试为Android构建我的颤音应用时,可视化工作室的输出:

  • 这里似乎有什么问题?