Если процесс с многопоточными разветвлениями, то память стека других потоков будет скопирована, но недоступна.Я думаю, что это приведет к пустой трате памяти.(Поскольку дочерние потоки не копируются)
//This code describes that the copied unreachable stack exists in the copied child process.
//The variable 'buf' has different values in both processes.
int sig;
int global;
int *ptr;
void proc()
{
pthread_t tid;
pthread_create(&tid, NULL, thread_start, NULL);
while (ptr == NULL);
pid_t pid = fork();
sig = 1;
usleep(100000);
if (pid)
{
printf("Process Response: %d, %p, %d\n", pid, ptr, *ptr);
global = 1;
int status;
wait(&status);
}
else
{
printf("Process Response: %d, %p, %d\n", pid, ptr, *ptr);
global = 2;
exit(0);
}
}
void *thread_start(void* data)
{
int buf = 135;
ptr = &buf;
while (sig == 0);
buf = 999;
sig = 0;
while (global == 0);
printf("Thread Response: %d\n", global);
return NULL;
}
Более того, если дочерний поток выделяет большую память в куче, растрата памяти будет иметь решающее значение.Просто я не должен писать такие программы?