在linux (linux线程)上,当从main返回时(在线程完成之前),正在运行的线程会发生什么情况?当从main返回时,内存是dis分配的,因此线程应该访问未分配的内存。这会导致线程退出吗?
我肯定线程已经死了,,但是这是如何发生的,
发布于 2014-05-22 13:45:51
我确信线程已经被杀死了,但是这是如何发生的呢?
从main返回与调用exit()相同。这意味着由atexit()建立的处理程序,并且运行任何系统清理处理程序。最后,要求内核终止整个进程(即所有线程)。
(请注意,如果在此时运行其他线程,例如在运行时调用其析构函数之后访问全局C++对象的另一个线程,则可能会导致问题。)
发布于 2014-05-22 13:22:23
线程在主应用程序(或其他进程)的进程下运行,但我假设您不会创建另一个进程,只创建线程。它们与它共享内存,并且是相同的进程,因此系统会杀死进程--它会自动杀死所有线程。没有比这更重要的了。线程不能在没有进程的情况下存在,因此没有访问某个未分配内存的选项,它只是停止执行,并且在进程清理级别上清除内存。
它是如何发生的,这显然是与系统有关的。例如,Windows 95在进程结束后没有释放内存,因此,如果应用程序出现内存泄漏,杀死它也没有帮助。从那时起,情况发生了变化。每个系统都能以不同的方式处理它。
https://stackoverflow.com/questions/23807867
复制相似问题