История изменений
Исправление grem, (текущая версия) :
Все приходит с опытом ;)
Я розовая звезда дятел! :)
double (*a)[n] = (double (*)[n])malloc(n * sizeof(double));
, хоть мы и объявили тип double (*a)[n]
для 12 элементов, он, естественно, выделяет память только под 12 элементов, а не для 144. Поэтому a[11][0] = 40.0;
, который до free(a), пишет не в выделенный участок памяти, а за его пределы, повреждая кучу. Инициализация должна быть следующей (подправлю в теме): double (*a)[n] = (double (*)[n])malloc(n * n * sizeof(double));
Исходная версия grem, :
Все приходит с опытом ;)
Я розовая звезда дятел! :)
double (*a)[n] = (double (*)[n])malloc(n * sizeof(double));
, хоть мы и объявили тип double (*a)[n]
для 12 элементов, он, естественно, выделяет память только под 12 элементов, а на для 144. Поэтому a[11][0] = 40.0;
, который до free(a), пишет не в выделенный участок памяти, а за его пределы, повреждая кучу. Инициализация должна быть следующей (подправлю в теме): double (*a)[n] = (double (*)[n])malloc(n * n * sizeof(double));