デフォルトでは、C にはヒープが 1 つしかありません。
とはいえ、スレッド対応の一部のアロケーターはヒープを分割して、各スレッドが独自の領域を割り当てられるようにします。これにより、ヒープ スケールが改善されるはずです。
そのようなヒープの一例は Hoard です。
いいえ。すべてのスレッドが共通のヒープを共有します。
各スレッドにはプライベート スタックがあり、アイテムをすばやく追加および削除できます。これにより、スタック ベースのメモリは高速になりますが、無限再帰で発生するようにスタック メモリを使いすぎると、スタック オーバーフローが発生します。
すべてのスレッドが同じヒープを共有するため、アロケーター/デアロケーターへのアクセスを同期する必要があります。アロケータの競合を回避するためのさまざまな方法とライブラリがあります。
一部の言語では、メモリのプライベート プールまたは個別のヒープを作成して、単一のスレッドに割り当てることができます。