【发布时间】:2011-12-28 17:54:09
【问题描述】:
在 Linux 进程中,每个线程都有自己的堆栈。除此之外,每个线程还有什么是本地的。我已经阅读了诸如文件分配表之类的内容...有人可以向我提供特定于线程的内容列表以及它们在内存中的排列方式。
其次,我注意到当我将堆栈分配给线程时(参见下面的代码),线程函数中第一个变量的地址在我分配的堆栈地址之后的字节数(stackAddr)。我认为这是因为栈顶是分配的栈内存的结束地址,因为局部变量的地址和分配的栈的值的差值大约是栈的大小(STACKSIZE强>)。换句话说,它看起来像是从底部向顶部增长的。
pthread_attr_init( &attr[tid] );
stackAddr = malloc(STACKSIZE);
pthread_attr_setstack( &attr, stackAddr, STACKSIZE );
【问题讨论】:
-
是的,堆栈向另一个方向增长,所以您回答了自己的问题。
-
@yi_H,但我需要有人回答我问题的第一部分:-p!