"流程终止,状态为-1073741819"简单的程序与矢量

时间:2015-04-02 08:35:00

标签: c++ vector compiler-errors codeblocks

出于某种原因,我得到"流程终止,状态为-1073741819"每当我运行我的程序时出错,我已经读过有些人因为代码块/编译器出错而得到这个错误,我只是想知道在重新安装编译器之前我的代码是否有任何问题这样。我使用的是code :: blocks和GNU GCC编译器。

我的代码会创建一个向量,该向量在一周内存储40个工作小时,并在该向量中存储一个向量,该向量存储代表这些小时内可用的5个人的字母。

Schedule.cpp:

#include <iostream>
#include "Schedule.h"
#include <vector>
#include <string>

using namespace std;

/// Creates a Vector which holds 40 items (each hour in the week)
/// each item has 5 values ( J A P M K or X, will intialize as J A P M K)

vector< vector<string> > week(40, vector<string> (5));

Schedule::Schedule(){
        for (int i = 0; i<40; i++){
            week[i][0] = 'J';
            week[i][1] = 'A';
            week[i][2] = 'P';
            week[i][3] = 'M';
            week[i][4] = 'K';
        }
        // test 
        cout << week[1][3] << endl;
    }

标题文件:

#ifndef SCHEDULE_H
#define SCHEDULE_H
#include <vector>
#include <string>

using namespace std;

class Schedule
{
    public:
        Schedule();
    protected:
    private:
        vector< vector<string> > week;

};

#endif // SCHEDULE_H

main.cpp中:

#include <iostream>
#include "Schedule.h"
#include <vector>
#include <string>

using namespace std;

int main()
{
    Schedule theWeek;
}

1 个答案:

答案 0 :(得分:3)

这不是一个反汇条错误。

您的构造函数中出现内存错误。

你的代码有几个问题,例如你的cpp中你声明了一个全局向量周,然后在构造函数中隐藏它,因为构造函数将访问Schedule :: week。

你的cpp应该是这样的:

// comment out the global declaration of a vector week ...
// you want a vector for each object instantiation, not a shared vector between all Schedule objects
// vector< vector<string> > week(40, vector<string> (5)); 


Schedule::Schedule()
{
    for (int i=0;i<40;i++)
    {
        vector<string> stringValues;
        stringValues.push_back("J");
        stringValues.push_back("A");
        stringValues.push_back("P");
        stringValues.push_back("M");
        stringValues.push_back("K");
        week.push_back(stringValues);
    }
}

当您第一次尝试访问周向量时,代码中会出现内存错误:

 week[i][0] = 'J' ;

当你调用那行代码时,你的Schedule :: week向量里面有0个元素(所以周[i]已经是一个错误)。