質問です。

オープンソースのプロジェクトでソース解析してると、以下のような、
関数内部でメモリ領域を動的に確保して、それを戻り値として返す関数をよくみかけます。
直接malloc使ったほうがスタックの領域が無駄に蓄積しないと思うんですが、意図があって
作ってるんでしょうか。

#include <stdlib.h>

void *alloc(size_t n)
{
void *p;

p = (char*)malloc(n);
if(!p){
return NULL;
}
return p;
}