gpt4 book ai didi

c++ - 跨线程的内存分配和释放

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

我仍在尝试调试一个非常狡猾的内存损坏问题。我发现我的一段代码在一个线程上分配内存并在另一个线程上删除它。

我有一种模糊的感觉,这是错误的,但我不确定为什么。线程共享进程内存,并且对这些结构的访问受互斥锁保护,所以我认为一切都会正常进行。但是,是否有任何我没有看到的危险?

最佳答案

正如@monjardin 在另一个答案中指出的那样,您尝试做的事情本身并没有错。

作为一个额外的想法,你没有提到平台等,你遇到这个问题但是如果多线程对你和/或你正在处理的这个应用程序是新的,你想确保您使用的标准支持库是库的线程安全版本。在许多环境/平台中,它们同时具有可供开发人员使用的支持库的单线程和多线程版本。如果您正在使用线程但链接到库的单线程版本,则可能会发生很多不好的事情。例如,在 malloc()free() 的单线程支持库中,它不会为堆提供互斥保护(作为优化)。该库的多线程版本将为堆管理器添加互斥锁保护,以支持多个线程同时操作堆。 (这只是一个例子)。

关于c++ - 跨线程的内存分配和释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/390102/

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