На вход даётся булевый двухмерный массив. Мне нужно масштабировать его. Я пытаюсь создать новый динамический массив который будет в 2 раза больше, но у меня не получается. Код компилируется с такими варнингами:
После запуска, идёт вывод кучи больших чисел(из не принадлежащей мне памяти) и следственно происходит краш.
Есть такой код:
#include <iostream>
#include <math.h>
using namespace std;
bool map[3][3] = {
1, 1, 1,
0, 1, 0,
0, 1, 0
};
template<std::size_t U, std::size_t V>
void scaleMap(bool (&map)[U][V], int coefficient)
{
uint32_t size = sizeof(map) / sizeof(bool);
int arrayLineAndColumnSize = (int)sqrt(size);
int newMapLineAndColumnSize = sqrt(arrayLineAndColumnSize * coefficient);
bool** newMap = (bool**)malloc(newMapLineAndColumnSize * sizeof(bool*));
for (int i = 0; i < newMapLineAndColumnSize; i++)
newMap[i] = (bool*)malloc(newMapLineAndColumnSize * sizeof(bool));
int tmpCounter = 0;
for (int j = 0; j < arrayLineAndColumnSize; ++j)
{
for (int i = 0; i < arrayLineAndColumnSize; ++i)
{
for (int n = 0; n < coefficient; ++n)
{
newMap[j][n + tmpCounter] = map[j][i];
}
tmpCounter++;
}
tmpCounter = 0;
}
for (int j = 0; j < arrayLineAndColumnSize * coefficient; ++j)
{
for (int i = 0; i < arrayLineAndColumnSize * coefficient; ++i)
cout << newMap[j][i];
cout << endl;
}
//delete [] newMap;
}