В процессе Linux каждый поток имеет свой собственный стек.Кроме того, что еще является локальным для каждого потока.Я прочитал такие вещи, как таблица размещения файлов и т. Д. Может кто-нибудь предоставить мне список вещей, которые относятся к потоку и как они расположены в памяти.
Во-вторых, я заметил, что когда я выделяю стек для потока (см. Код ниже), адрес первой переменной в функции потока как-то довольно байтовый после адреса стека, который я выделил ( stackAddr ).Я думаю, это потому, что вершина стека является конечным адресом выделенной памяти стека, так как разница в значении адреса локальной переменной и выделенного стека составляет приблизительно размер стека ( STACKSIZE ).Другими словами, это выглядит как рост снизу вверх.
pthread_attr_init( &attr[tid] );
stackAddr = malloc(STACKSIZE);
pthread_attr_setstack( &attr, stackAddr, STACKSIZE );