Cześć, piszę pewien program, w którym potrzebuję dynamicznej dwuwymiarowej tablicy znaków.
Kod kompiluje się nawet bez żadnego warninga, częsciowo działa jednak po wykonaniu częsci pojawia się "program przestał działać".
Podczas debugowania pojawia się:
Zgłoszono wyjątek w lokalizacji 0x775231F6 (ntdll.dll) w Projekt.exe: 0xC0000005: Naruszenie zasad dostępu podczas odczytywania w lokalizacji 0xDDDDDDDD.
Nieobsłużony wyjątek w lokalizacji 0x775231F6 (ntdll.dll) w Projekt.exe: 0xC0000005: Naruszenie zasad dostępu podczas odczytywania w lokalizacji 0xDDDDDDDD.
Do kodu dodaję na początek deklaracje zmiennych, które są w pliku nagłówkowym:
#include "Table.hpp"
#include <iostream>
//int n;
//char** board = new char*[n];
int Table::getN() {
return this->n;
}
void Table::setN(int n) {
this->n = n;
}
char** Table::getBoard() {
return this->board;
}
void Table::setBoard(char** board) {
this->board = board;
}
void Table::createBoard(int n) {
for (int i = 0; i < n; i++)
this->board[i] = new char[n];
}
void Table::changeSize(int k) {
char** temp = new char*[k];
for (int i = 0; i < k; i++)
temp[i] = new char[k];
for (int i = 0; i < this->n; i++)
for (int j = 0; j < this->n; j++)
temp[i][j] = this->board[i][j];
delete[] this->board;
this->board = temp;
this->n = k;
//delete[] temp;
}
void Table::fillCells() {
int k = this->n;
for (int i = 0; i < k; i++)
for (int j = 0; j < k; j++)
this->board[i][j] = 'x';
}
void Table::printBoard() {
int k = this->n;
for (int i = 0; i < k; i++) {
for (int j = 0; j < k; j++)
std::cout << this->board[i][j];
std::cout << "\n";
}
}
void Table::destroyBoard() {
delete[] this->board;
}
Table::Table(int n) {
this->n = n;
for (int i = 0; i < n; i++)
this->board[i] = new char[n];
}
int main() {
Table table(7);
//table.createBoard(7);
table.fillCells();
table.printBoard();
//table.destroyBoard();
//table.changeSize(9);
//table.setN(9);
//table.fillCells();
//table.printBoard();
return 0;
Jak widać metoda changeSize jest zakomentowana, więc to nie ona krzaczy ;/
Przy próbie uruchomienia jako administrator pojawia się:
Potrafi ktoś pomóc? Z góry dzięki :) Pozdrawiam