void fillMassL(float **massL, int size)
{
for (size_t j = 0; j < size; j++)
{
for (size_t i = 0; i < size; i++)
{
if (i == j) massL[j][i] = 1;
else massL[j][i] = 0;
}
}
}
Компилятор показывает ошибку где-то тут, но вообще не могу понять что не так.
if (i == j) massL[j][i] = 1;
else massL[j][i] = 0;
Cообщение компилятора:
Вызвано исключение по адресу 0x00007FF6B49826F5 в LR1.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFFFFFFFFFFFFFFFF., произошло
Вызов функции:
fillMassL(ptr_massL, *ptr_size);
Создание ptr_massL:
int *ptr_size = new int;
*ptr_size = 5;
float **ptr_massL = new float*[*ptr_size];
Ответ
Maccив ptr_massL создан некорректно. Должны быть 2 этапа:
Выделяется память под сам массив указателей на float
В цикле выделяется память под каждый его элемент.
float **ptr_massL = new float*[*ptr_size];
for(int i = 0; i < *ptr_size; ++i)
ptr_massL[i] = new float[*ptr_size];
Вот тогда все будет ок.
Комментариев нет:
Отправить комментарий