Я сразу вижу одну проблему.Вы освобождаете двойной узел, а затем разыменовываете его.Поменяйте местами два свободных.
Кроме того, я думаю, что ваши mallocs неправильного размера.Первый должен быть sizeof (double *), а второй sizeof (double).
Редактировать: И, как говорили другие, вы только выделили первый «столбец» в вашей матрице.