ConsoleApplication4.exe已停止工作。 Windows将关闭程序并通知解决方案是否可用

时间:2014-03-13 11:50:04

标签: c++ visual-studio visual-studio-2012

我是C ++和Visual Studio的新手。我试图在Visual Studio 2012中运行和调试代码。但是当代码需要一些更复杂的计算时,VS就像在下面的示例中崩溃一样。在我没有调试的情况下单击start时进行编译后,我会看到一个显示上面消息的弹出窗口。最后它显示两个选项debug和close program。当我点击调试它说“控制台application4.exe [5844]中发生了未处理的win32异常”。我不明白这是什么问题。当我尝试运行一些简单的程序,例如std::cout << "something";时,它会正确显示消息。

// ConsoleApplication4.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "tbb/blocked_range.h"
#include "tbb/tbb.h"
#include <stdio.h> 
#include <math.h>
#include <iostream>
#include "tbb/parallel_for.h"
using namespace tbb;
#define PI 3.14159265

class CL
{
    double * rangeOne;
    double * rangeTwo;

public:
    CL(double * rangeOne, double * rangeTwo) {}

    void operator()(blocked_range<size_t>& r)
        const
    {
        for (size_t i = r.begin(); i != r.end(); ++i)
        {
            rangeOne[i] = sin(i*PI / 180);        
            rangeTwo[i] = cos(i*PI / 180);            
        }
    }


};

int _tmain(int argc, _TCHAR* argv[])
{
    double * u = new double[10];
    double * p = new double[10];
    parallel_for(blocked_range<size_t>(0, 10), CL(u, p));
    return 0;
}

2 个答案:

答案 0 :(得分:2)

此:

CL(double * rangeOne, double * rangeTwo) {}

不初始化您的类变量。它什么都不做。什么都没有。

应该是:

CL(double * rangeOne, double * rangeTwo) : rangeOne(rangeOne), rangeTwo(rangeTwo) {}

但请自己帮个忙,并使用此错误来学习如何使用调试器。这不会是你生命中遇到的最后一个错误。

答案 1 :(得分:1)

通过F10一步一步地找出异常点,并查看将要发生的异常步骤。