我理解进程内存布局的样子(代码,数据,堆,堆栈).
但是,我不明白,具有多个线程的程序的内存布局究竟是什么样子.
毕竟,这个进程有一个堆栈,所以我假设所有线程都以某种方式共享相同的堆栈.但这似乎不正确,因为每个线程都有自己的堆栈,并且不保证线程在命令中执行他们被调用了,所以把它们一个一个地放到进程堆栈上对我来说并没有多大意义.
我在网上看到了这张照片:
线程内存布局
在这里看来,每个线程都有自己的堆栈,这是有意义的,也是它自己的内核堆栈.
这是否意味着我(使用图片)3"进程"?(假设进程地址空间为4GB,那么3个线程将为12GB?我认为不是..)
我想了解每个线程堆栈在内存中的位置.
我知道所有线程共享数据和代码段,所以我假设Heap将包含线程的堆栈,或者它们将位于内核空间中.
我真的很想知道会发生什么......
很多赞赏.