C++ 我得了C++;cygwin_异常和stacktrace,但我不&x27;我不知道发生了什么事

C++ 我得了C++;cygwin_异常和stacktrace,但我不&x27;我不知道发生了什么事,c++,cygwin,C++,Cygwin,我试着测试我的数据类,该类应该读、写和打印二维矢量地图 Data.h: /* * File: Data.h * Author: Kevin * * Created on 04 October 2015, 19:54 */ #ifndef DATA_H #define DATA_H #include <fstream> #include <string> #include <vector> using std::ifstream; using

我试着测试我的
数据
类,该类应该读、写和打印二维矢量地图

Data.h

/* 
 * File:   Data.h
 * Author: Kevin
 *
 * Created on 04 October 2015, 19:54
 */

#ifndef DATA_H
#define DATA_H
#include <fstream>
#include <string>
#include <vector>
using std::ifstream;
using std::ofstream;
using std::string;
using std::vector;

class Data {

public:
    Data();
    void readMap();
    void writeMap();
    void writePlayerData();
    void readPlayerData();
    void printMap();
private:
    ifstream _input;
    ofstream _output;
    unsigned _ySize;
    unsigned _xSize;
    vector<vector<char> > map;
};

#endif  /* DATA_H */
使用此主要功能:

#include <iostream>

#include "Data.h"

int main() {
  Data dataTest;
  //dataTest.writeMap();
  dataTest.readMap();
  //dataTest.printMap();
 }
在包含stacktrace的文件中:

Exception: STATUS_ACCESS_VIOLATION at rip=001004024C0 rax=0000000000000000 rbx=0000000000000000 rcx=0000000000000000 rdx=0000000000000000 rsi=00000006000283D0 rdi=0000000000000000 r8
=000000000000000A r9 =8080808080808080 r10=FEFEFEFEFEFEFEFF r11=0000000600042708 r12=0000000000000000 r13=0000000000000001 r14=000000000024CB63 r15=000000000024CB63 rbp=000000000024C5F0 rsp=000000000024C5F0 program=C:\Users\Kevin\Documents\NetBeansProjects\Dev\Roguelike\dist\Debug\Cygwin_4.x-Windows\roguelike.exe, pid 9280, thread main cs=0033 ds=002B es=002B fs=0053 gs=002B ss=002B Stack trace: Frame        Function    Args 0000024C5F0  001004024C0 (00000000000, 006000283D0, 00000000000, 00600042708) 0000024C680  001004012D6 (00000000001, 001802E3A40, 00000000000, 003FF0AB258) 0000024C6F0  001004016CE (00000000020, FF0700010302FF00, 0018004830F, 0000024D680) 0000024CBC0  00180048380 (00000000000, 00000000000, 00000000000, 00000000000) 00000000000  0018004607C (00000000000, 00000000000, 00000000000, 00000000000) 00000000000  00180046114 (00000000000, 00000000000, 00000000000, 00000000000) 00000000000  001004018B1 (00000000000, 00000000000, 00000000000, 00000000000) 00000000000  00100401010 (00000000000, 00000000000, 00000000000, 00100401000) 00000000000  7FFD5D852D92 (00000000000, 00000000000, 00000000000, 00000000000) 00000000000  7FFD5F7D9F64 (00000000000, 00000000000, 00000000000, 00000000000) End of stack trace

我真的搞不清楚到底发生了什么。

在头文件中,我还将包含相应的代码。您在
map
中访问(或尝试访问)元素时,无需初始化这些元素。因此出现了错误。如果没有初始化
map[y]
到至少
i
+1个元素,就不能只
map[y][i]=…
,这反过来需要初始化
map
到至少
y
+1个元素。
map[y][i]=行[i]不能在未调整大小的向量上执行此操作。在访问索引之前使用
resize()
,或者使用
push_back()
line=line.c_str()填充数据--我退缩了。为什么要这样做?“因此将适合我的向量映射变量”即使这是真的,您试图将其分配回
行,而不是“映射”。
2 [main] roguelike 9280 cygwin_exception::open_stackdumpfile: Dumping stack trace to roguelike.exe.stackdump

RUN FAILED (exit value 35,584, total time: 1s)
Exception: STATUS_ACCESS_VIOLATION at rip=001004024C0 rax=0000000000000000 rbx=0000000000000000 rcx=0000000000000000 rdx=0000000000000000 rsi=00000006000283D0 rdi=0000000000000000 r8
=000000000000000A r9 =8080808080808080 r10=FEFEFEFEFEFEFEFF r11=0000000600042708 r12=0000000000000000 r13=0000000000000001 r14=000000000024CB63 r15=000000000024CB63 rbp=000000000024C5F0 rsp=000000000024C5F0 program=C:\Users\Kevin\Documents\NetBeansProjects\Dev\Roguelike\dist\Debug\Cygwin_4.x-Windows\roguelike.exe, pid 9280, thread main cs=0033 ds=002B es=002B fs=0053 gs=002B ss=002B Stack trace: Frame        Function    Args 0000024C5F0  001004024C0 (00000000000, 006000283D0, 00000000000, 00600042708) 0000024C680  001004012D6 (00000000001, 001802E3A40, 00000000000, 003FF0AB258) 0000024C6F0  001004016CE (00000000020, FF0700010302FF00, 0018004830F, 0000024D680) 0000024CBC0  00180048380 (00000000000, 00000000000, 00000000000, 00000000000) 00000000000  0018004607C (00000000000, 00000000000, 00000000000, 00000000000) 00000000000  00180046114 (00000000000, 00000000000, 00000000000, 00000000000) 00000000000  001004018B1 (00000000000, 00000000000, 00000000000, 00000000000) 00000000000  00100401010 (00000000000, 00000000000, 00000000000, 00100401000) 00000000000  7FFD5D852D92 (00000000000, 00000000000, 00000000000, 00000000000) 00000000000  7FFD5F7D9F64 (00000000000, 00000000000, 00000000000, 00000000000) End of stack trace