gpt4 book ai didi

c++ - 当 C++ 线程退出时,内存是否保持分配状态?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:01:06 25 4
gpt4 key购买 nike

我在 Linux 上使用 pthread 库。

我在线程 A 中分配一个字符串,然后尝试在线程 B 中打印该字符串。但是,该字符串只是打印出空字符串(我已验证它在线程 A 中有效)。

注意:该字符串驻留在一个对象内,我怀疑该对象可能正在被清理或重新实例化为空...容器对象没有给我一个段错误或任何东西,只是所有的值都是空的。

这是因为线程无法从其他线程访问内存,还是因为线程 A 停止后内存被取消分配?或者两者都不是;这很可能是我代码中的错误,但我只是想排除这种可能性......

更新:

原来是内存问题。感谢您的回答,我也有answered this my self ,如果您同意/不同意,请对我的回答发表评论。

最佳答案

与进程不同,线程在进程内共享一个公共(public)内存空间(每个线程都有自己的栈,但堆通常是共享的)。因此,当您退出线程时,从共享堆分配的内存不会自动释放。但是,例如,如果您在堆栈上分配了一个字符串对象并通过一个简单的指针将其传递到某处,则析构函数将在线程退出时释放内存。

关于c++ - 当 C++ 线程退出时,内存是否保持分配状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/724536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com