Назад к вопросам
Касперский
Junior — Middle
90
Какая область памяти выделяется при запуске нового потока исполнения?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
При запуске нового потока исполнения в C/C++ обычно выделяется отдельный стек памяти для этого потока. Стек используется для хранения локальных переменных, адресов возврата и других данных, необходимых для выполнения функций в рамках данного потока. Кроме стека, поток разделяет с другими потоками процессное адресное пространство, включая кучу (heap) и статические данные.
Пример создания потока с выделением стека (на уровне ОС или библиотеки, например, pthreads):
#include <pthread.h>
#include <stdio.h>
void* thread_func(void* arg) {
int local_var = 5; // хранится в стеке потока
printf("Local var: %d\n", local_var);
return NULL;
}
int main() {
pthread_t thread;
pthread_create(&thread, NULL, thread_func, NULL);
pthread_join(thread, NULL);
return 0;
}
Здесь для каждого потока ОС выделяет отдельный стек, чтобы локальные переменные не пересекались между потоками.