Проблема в вашем значении по умолчанию. Если вы опустите инициализатор члена, он будет создан по умолчанию. Для случая unsigned int RowNumber
это будет мусорное значение. (На практике это будет произвольное число)
У вас есть значение по умолчанию для double** Coefficients
, new double*[RowNumber];
. Если вы не инициализируете RowNumber
, когда вы делаете new double*[RowNumber];
и RowNumber
оказывается действительно высоким, он не может выделить достаточно памяти, поэтому выдает std::bad_alloc
.
С инициализатором элемента это выглядит так:
unsigned int RowNumber(1);
unsigned int ColumnNumber(2);
double** Coefficients = new double*[RowNumber]; // new double*[2];
for(int i=0; i<RowNumber;i++)
{Coefficients[i]=FillRow(ColumnNumber);}}
Без, это выглядит так:
unsigned int RowNumber; // Garbage value
unsigned int ColumnNumber;
double** Coefficients = new double*[RowNumber]; // Reading garbage value
RowNumber = 1;
ColumnNumber = 2;
for(int i=0; i<RowNumber;i++)
{Coefficients[i]=FillRow(ColumnNumber);}}
Чтобы это исправить, либо не устанавливайте значение по умолчанию для Coefficients
, либо установите значение по умолчанию на nullptr
, и сделайте new double*[RowNumber]
в теле конструктора.