История изменений
Исправление 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));