首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从main返回的运行线程在C中会发生什么情况?

从main返回的运行线程在C中会发生什么情况?
EN

Stack Overflow用户
提问于 2014-05-22 13:13:18
回答 2查看 1.6K关注 0票数 1

在linux (linux线程)上,当从main返回时(在线程完成之前),正在运行的线程会发生什么情况?当从main返回时,内存是dis分配的,因此线程应该访问未分配的内存。这会导致线程退出吗?

我肯定线程已经死了,,但是这是如何发生的,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-22 13:45:51

我确信线程已经被杀死了,但是这是如何发生的呢?

从main返回与调用exit()相同。这意味着由atexit()建立的处理程序,并且运行任何系统清理处理程序。最后,要求内核终止整个进程(即所有线程)。

(请注意,如果在此时运行其他线程,例如在运行时调用其析构函数之后访问全局C++对象的另一个线程,则可能会导致问题。)

票数 2
EN

Stack Overflow用户

发布于 2014-05-22 13:22:23

线程在主应用程序(或其他进程)的进程下运行,但我假设您不会创建另一个进程,只创建线程。它们与它共享内存,并且是相同的进程,因此系统会杀死进程--它会自动杀死所有线程。没有比这更重要的了。线程不能在没有进程的情况下存在,因此没有访问某个未分配内存的选项,它只是停止执行,并且在进程清理级别上清除内存。

它是如何发生的,这显然是与系统有关的。例如,Windows 95在进程结束后没有释放内存,因此,如果应用程序出现内存泄漏,杀死它也没有帮助。从那时起,情况发生了变化。每个系统都能以不同的方式处理它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23807867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档