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

2024-02-01

我在 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(使用前将#替换为@)

当 C++ 线程退出时,内存是否保持分配状态? 的相关文章

随机推荐

  • 扫描线算法 - 一维平面的实现

    问题很简单 平面上有一些给定的一维线 我们需要找到至少有一行的空间的总大小 让我用一个示例图像来讨论这个问题 这可能是一个案例 Or 这可能是一个案例或类似的东西 我知道这是一个基本问题扫线算法 https en wikipedia org
  • 全屏显示时 Flex 中的文本输入字段不起作用

    大家好 我有一个问题 如果我的应用程序是全屏的 我无法单击任何文本输入组件 也无法在字段中输入任何文本 我尝试过在运行时创建文本输入字段 并且尝试在 Flex 构建器的 GUI 设计窗口上时在画布上创建它们 然而 它们都给出相同的结果 并且
  • 将 IO Int 转换为 Int

    我通过转换创建了一个组合框xmlWidget to a comboBox与功能castTocomboBox现在我想获取活动项目的文本或索引 问题是如果我使用comboBoxGetActive它返回一个函数IO Int结果 我需要知道如何获得
  • ASP.NET MVC 将 null 转换为零长度字符串

    我正在使用 MVC 3 并尝试将留空的字段作为零长度字符串而不是空值发送到数据库 这可能与数据注释属性有关吗 如果不是 从空值转换的最合适的位置是什么 是在模型验证期间吗 虽然不理想 但这是我所知道的最好的方法 DisplayFormat
  • 找出超速时间段?

    我脑海中浮现出一些有趣的事情 假设我们有一个表 在 SQL Server 中 如下所示 Location Velocity Time 例如 Location Velocity Time 1 40 1 20 2 35 2 00 3 45 2
  • 获取特定键的所有值

    我在 mongoDB 中有一个数据 我想检索一个键的所有值 category 使用Python代码 我尝试了几种方法 但在每种情况下我都必须给出要检索的 值 任何建议 将不胜感激 id my id1 tags tag1 tag2 tag3
  • Keras 构建 9 维特征向量网络

    我有以下简单的数据集 它由 9 个特征组成 是一个二元分类问题 特征向量的示例如下所示 每行都有其对应的 0 1 标签 30 82 1 2 73 172 117 2 2 655 94 30 174 1 5 8 256 189 3 2 587
  • PHP:将数字四舍五入为 16 位小数

    嗨 我正在尝试将数字四舍五入16位小数但它只显示并且不会四舍五入直到14位小数 这是我的尝试 OUTPUT 0 16346153846154 预期输出 0 1634615384615385 我知道float只有 14 位十进制数字 还有其他
  • Windows 7 将 CTRL + j 映射到向下箭头键

    I have been searching for months for a way to map a key combination CTRL something to a directional key like down or up
  • QBOv3 XML 验证错误

    我正在尝试在批量请求中一起发送几个 Quickbooks 查询 我遵循了 Intuit 在这里提供的格式https developer intuit com docs 0025 quickbooksapi 0050 data service
  • 在内核调试模式下连接到目标机器时无法中断

    我正在启动一个包含 Windows 微过滤器的原型 我已经设置好了我的环境 目标虚拟机 实际上是 3 个 Windows 7 8 和 8 1 主机开发计算机 托管 Visual Studio 2013 和 HyperV VM 我终于设法将测
  • 设置特定配置文件时不加载 Spring bean

    背景 因此 我有几个与外部系统接口的 bean 对于开发来说 模拟外部系统并用一些产生或多或少静态响应的实现替换接口 bean 是很方便的 所以我一直在做的是创建一个接口 真正的实现和一个存根实现 如下所示 public interface
  • Colorbox:显示/模拟内联内容的“加载”动画

    您好 我正在使用 ColorBox 我们使用 jquery 在表单中执行了几个步骤 并且我们希望在等待 ajax 回复时显示 ColorBox 的加载动画 我们如何使用它 提前谢谢您 我认为你想要的是 fastIframe thediv c
  • 如何使用 jQuery UI 滑块动态更新 highcharts

    我正在寻找一种根据 jQuery UI 滑块确定的值动态更新 Highcharts 的方法 我还不太熟悉 AJAX 或 JSON 所以我运气不太好 我试图让收入在给定的月份内逐步增加 例如订阅服务 为了方便起见 我把它放在 jsFiddle
  • 如何测试预处理器符号是否#define'd但没有值?

    使用 C 预处理器指令 是否可以测试预处理器符号是否已定义但没有值 像这样的东西 define MYVARIABLE if defined MYVARIABLE MYVARIABLE blablabla endif EDIT 我这样做的原因
  • 从子进程触发 root 方法时的上下文

    我有这个非常简单的测试视图
  • 为什么 as_const 禁止右值参数?

    我想问为什么as const禁止右值参数 根据 http en cppreference com w cpp utility as constcppreference com 即为什么标准人员这样做 而不是为什么 cppreference
  • Play Framework 2 存储用户密码哈希的最佳方式

    我的应用程序中有一个添加用户选项 我想将用户密码以哈希格式存储在数据库中 密码以纯文本格式存储在框架附带的示例代码中 经过一番搜索后 我发现 play2 中实现了一个 Crypto encryptAES 函数 可用于保护密码 我的问题是使用
  • Chrome 调试器,水平滚动条在悬停时阻止变量值

    这种情况已经发生了几个星期了 在网上找不到任何东西 有人知道发生了什么事以及如何解决它吗 Screenshot 注意 我将鼠标悬停在包含字符串的变量上 这里真正的解决方法是在控制台窗口中放大 缩小 或者使用 Ctrl 0 重置缩放
  • 当 C++ 线程退出时,内存是否保持分配状态?

    我在 Linux 上使用 pthread 库 我在线程 A 中分配一个字符串 然后尝试在线程 B 中打印该字符串 但是 该字符串只是打印出空 我已经验证它在线程 A 中工作 注意 该字符串驻留在一个对象内 我怀疑该对象可能会被清理或重新实例