一 单线程进程的内存分布
二 多线程进程的内存分布
每个线程有自己独立的stack,但是heap是共享的。
为什么每个线程有独立的栈?
Since each thread can have its own execution sequence/code, it must have its own stack on which it might push/pop its program counter contents (when say function calls and returns happen). So threads of same process do not share stack.
线程stack上的变量或对象不会被另外一个线程看到,除非主动告诉其这个变量或对象的地址,因为相同进程里的线程栈都是在同一个地址空间上,所以该地址在另外一个线程也是有效的。