我是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;
}
答案 0 :(得分:2)
此:
CL(double * rangeOne, double * rangeTwo) {}
不初始化您的类变量。它什么都不做。什么都没有。
应该是:
CL(double * rangeOne, double * rangeTwo) : rangeOne(rangeOne), rangeTwo(rangeTwo) {}
但请自己帮个忙,并使用此错误来学习如何使用调试器。这不会是你生命中遇到的最后一个错误。
答案 1 :(得分:1)
通过F10一步一步地找出异常点,并查看将要发生的异常步骤。