Sobes.tech
Junior — Middle
118

¿Qué área de memoria se asigna al iniciar un nuevo hilo de ejecución?

Empresas donde se preguntó
КасперскийКасперский

Respuesta de la IA

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;
}

Здесь для каждого потока ОС выделяет отдельный стек, чтобы локальные переменные не пересекались между потоками.