Как память выделяется в случае порождения нового потока, т.е. как неупорядоченное хранение памяти, стопка памяти и потоки связаны? Я знаю, что это фундаментально (понятие платформы .NET), но так или иначе я не очень знаю об этом понятии.
На этот вопрос действительно трудно ответить из-за того, как реализованы потоки в .Net. Не обязательно существует реализация 1-1 между управляемыми и соответствующими родными потоками. CLR может свободно использовать несколько собственных потоков для реализации одного управляемого потока. Поэтому выделение нового управляемого потока не обязательно приводит к порождению собственного потока. Он может просто предполагать существующий.
Не могли бы вы объяснить нам, почему это вызывает у вас беспокойство? Возможно, это приведет нас к лучшему ответу.
Стек принадлежит контексту потока. Куча принадлежит процессу, следовательно, она распределяется между потоками.
Это фундаментально намного глубже, чем .net. Потоки - это собственные объекты ОС. То, что называется управляемым потоком, - это просто оболочка вокруг собственного потока.
Итак, вернемся к вашему вопросу. Куча памяти распределяется между потоками одного процесса, поскольку они расположены в едином пространстве виртуальной памяти. Стеки индивидуальные.
Каждый поток имеет свой собственный стек, но все потоки совместно используют кучу.