C 11静态(非thread_local)变量是否总是在主线程上被破坏?
它们是否总是仅在程序退出时销毁(考虑到我们不会手动调用它们的析构函数)?
UPDATE
为简洁起见,我们假设调用了析构函数. (我们没有拉插头,我们没有杀掉-9)
解决方法 全局对象的析构函数由std :: exit调用.当main返回时,该函数由C运行时调用.可以安排std :: exit由除了进入main之外的线程调用.例如.:
struct A{ A() { std::cout << std::this_thread::get_ID() << '\n'; } ~A() { std::cout << std::this_thread::get_ID() << '\n'; }};A a;int main() { std::thread([]() { std::exit(0); }).join();}
输出:
140599080433472140599061243648
显示一个线程称为构造函数,另一个称为析构函数.
有关详细信息,请参见std::exit
和std::atexit
.
以上是内存溢出为你收集整理的总是在主线程上破坏C静态变量吗?全部内容,希望文章能够帮你解决总是在主线程上破坏C静态变量吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)