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