我在 Linux 上使用 pthread 库。
我在线程 A 中分配一个字符串,然后尝试在线程 B 中打印该字符串。但是,该字符串只是打印出空(我已经验证它在线程 A 中工作)。
注意:该字符串驻留在一个对象内,我怀疑该对象可能会被清理或重新实例化为空...容器对象不会给我一个段错误或任何东西,只是所有值都是空的。
这是因为线程无法从其他线程访问内存,还是因为线程 A 停止后内存将被取消分配?或者两者都不是;这很可能是我的代码中的错误,但我只是想排除这一点......
Update:
原来是内存问题。感谢您的回答,我也我自己回答了这个 https://stackoverflow.com/questions/724536/does-memory-stay-allocated-when-a-c-thread-exits/730868#730868,如果您同意/不同意,请对我的回答发表评论。
与进程不同,线程在进程内共享公共内存空间(每个线程都有自己的堆栈,但堆通常是共享的)。因此,当您退出线程时,从共享堆分配的内存不会自动释放。但是,例如,如果您在堆栈上分配了一个字符串对象并通过一个简单的指针将其传递到某处,则析构函数将在线程退出时释放内存。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)