После создания матрицы и ее распечатки я получаю ошибку сегментации ... Все символы моей матрицы печатаются, но после последней строки, которую я печатаю:
std::cout << endl;
и я получаю ошибку сегментации.
Мой код:
Заголовок:
class Board{
private:
struct coord {
int x;
int y;
};
coord _coord;
char** board;
int size;
public:
Board(int v);
//~Board();
friend std::ostream& operator<<(std::ostream& os, Board const &b);
};
Мой код CPP:
Board::Board(int v)
{
size = v;
board = new char* [size];
for (int i=0; i<size; i++)
{
board[i] = new char[size];
for(int j = 0 ; j < size ; j++){
board[i][j] = '*';
}
}
}
ostream& operator<<(std::ostream& os, Board const &b)
{
for(int i = 0 ; i < b.size ; i++){
for(int j = 0 ; j < b.size ; j++){
cout << b.board[i][j] << " ";
}
cout << endl; // when (i == 3) the debug tells me after this I am thrown out
}
//cout << " " << endl;
}
Моя главная:
#include "Board.h"
#include <iostream>
#include <vector>
//#include <map>
using namespace std;
int main() {
Board board1{4}; // Initializes a 4x4 board
cout << board1 << endl;
return 0;
}
Тогда я получаю:
* * * *
* * * *
* * * *
* * * *
Segmentation fault
но если я откомментирую: "// cout <<" "<< endl;" </strong> У меня больше нет ошибки сегментации.
Где проблема? это выглядит слишком просто, но я получаю сообщение об ошибке. (С дополнительной надписью << "" << endl; строку я могу продолжить и дать свое задание, но я считаю, что я должен узнать больше и выяснить проблему) </p>
Я видел здесь , что в целом в какой-то ситуации я попадаю в область памяти, в которую мне не следует попадать, но которую я знаю и спрашиваю о своем конкретном коде, вот почему это не дубликат. Кроме того, здесь был похожий вопрос, но он был конкретным и не относился к моему вопросу.