откуда в массиве char берётся мусор, превышающий размер массива?
мне нужно было прочитать 2D массив char из файла. всё работает, но при выводе массива появляется очень много мусора. я в курсе про ноль в конце строки, но если его нет, то будет прочитан весь массив. я выделяю по 5*5 байт. откуда здесь берётся столько мусора?
файл:
5 5
*****
** **
*****
*****
*****
вывод:
5 5
*****¤¤¤¤║|g
** **¤¤¤¤
*****¤¤¤¤▌
*****¤¤¤¤
*****¤¤¤¤
код:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
char** Map;
string str;
int x = 0, y = 0;
int main() {
ifstream f;
f.open("maps\\map.txt");
f >> x;
f >> y;
getline(f, str); // перевод на следующую строку
cout << x << " " << y << "\n";
Map = new char* [y];
for (int i = 0; i < y; i++) {
Map[i] = new char[x];
getline(f, str);
str.copy(Map[i], x);
}
f.close();
cout << '\n';
for (int i = 0; i < y; i++)
cout << Map[i] << '\n';
return 0;
}