Нормально ли выделять память внутри функции, а затем выдавать указатель на нее в качестве возвращаемого значения (ну или NULL )?
Меня терзают смутные сомнения, что лучше выделять память на том уровне вложенности, где ее и освобождаешь, а возвращаемое значение оставить для сигнализации об ошибках или void. В данном случае функция кроме математических вычислений ничем не занимается, пока ошибок не придумал.