De forma predeterminada, C solo tiene un montón.
Dicho esto, algunos asignadores que son conscientes de subprocesos dividirán el montón para que cada subproceso tenga su propia área desde la cual asignar. La idea es que esto debería mejorar la escala del montón.
Un ejemplo de tal montón es Hoard.
No. Todos los subprocesos comparten un montón común.
Cada subproceso tiene una pila privada, de la que puede agregar y eliminar elementos rápidamente. Esto hace que la memoria basada en pila sea rápida, pero si usa demasiada memoria de pila, como ocurre en la recursividad infinita, obtendrá un desbordamiento de pila.
Dado que todos los subprocesos comparten el mismo montón, el acceso al asignador/desasignador debe estar sincronizado. Hay varios métodos y bibliotecas para evitar la contención del asignador.
Algunos lenguajes le permiten crear grupos privados de memoria o montones individuales, que puede asignar a un solo subproceso.