Мне трудно поверить, что программа работает с ошибками именно в этой строке, но вполне вероятно, что она когда-нибудь выйдет из-за ошибки, если вы назначите случайное значение указателю.
Вы должны выделить память для матрицы, используя malloc
; несколько раз, на самом деле, если вы используете структуру двойного указателя. При обработке матриц в C я склонен использовать другую структуру:
struct Matrix {
size_t ncols, nrows;
int *mat;
};
затем инициализируйте элемент mat
с malloc(ncols * nrows)
и индекс с mat[i * nrows + j]
. Индексирование немного сложнее, но управление памятью намного проще, и некоторые матричные операции, вероятно, становятся намного быстрее, потому что все хранится в одном массиве .