Cのalloc系/free関数は、配列領域を動的に確保/解放するとの事ですが
この動的確保/解放は、内部的には一体どういった処理を行っているのでしょうか
使用可能なメモリワークに対して常にポインタを持っていて、alloc系関数をコールしたとき
戻り値としてこのポインタをバッファポインタとして返すのでしょうか(スタック的な処理?)

また、Cでのローカル変数の内部的な確保の仕方を考えたとき

void func(void){
    int a;
}

int型のaはどこに生成されるのでしょうか
スタックに積まれるとか聞いた事があるような気がするのですが・・・