返回分配的字符串导致内存泄漏

2023-12-08

在 Fortran 中返回可变长度字符串的建议解决方案来自this问题:

  function itoa(i) result(res)
    character(:),allocatable :: res
    integer,intent(in) :: i
    character(range(i)+2) :: tmp
    write(tmp,'(i0)') i
    res = trim(tmp)
  end function

我的理解是否正确,该函数的结果永远不会被释放?因此,对于大量的调用,您可能会遇到内存泄漏。

所以我的意思是,我不分配函数的结果,而是“就地”使用它,如下所示

do i = 1, n
    write(*, *) "tmp_"//itoa(i)
end do

我显然没有参考我可以调用的结果deallocate当我循环时,它绝对不会超出范围。

如果我正确理解你(@Francescalus),我仍然可以相信它已被释放的事实。


这个问题是一个具体案例另一个,但具体化可以让我们更加精确。您应该阅读那里的答案以获取更多一般细节。

正确的实现中不会出现内存泄漏。 Fortran 标准明确地解决了这些结果。例如,在 Fortran 2008 中,注释 12.41 表示:

函数结果类似于函数子程序本地的任何其他实体(变量或过程指针)。它的存在从函数执行开始时开始,到函数执行终止时结束。然而,由于该实体的最终值随后用于调用该函数的表达式的求值,因此实现可能希望推迟释放该实体占用的存储空间,直到其值已用于表达式求值之后。

当可分配函数结果的存在结束时,它将被释放。所有可分配结果都会发生这种情况,而不仅仅是延迟长度字符串。

因此,内存可能会“泄漏”一段时间,但应该很快就会被回收。许多级别的函数评估可能会导致问题 - 但在此之前您可能已经得到了令人讨厌的代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

返回分配的字符串导致内存泄漏 的相关文章

  • Json 将字符串中的 & 转换为 \u0026

    我正在尝试从 pdf 中提取文本并将其写入 json 文件 在提取 unicode 字符时 Json 将所有 转换为 u0026 例如我的实际字符串是 1588 代表 它正确打印到 txt 文件 控制台等 但是当我尝试将此字符串打印到 Js
  • 在样式定义中使用@string资源

    我在 styles xml 文件中定义了类似以下内容 如下所示 但是Android由于使用 string fontExtraLarge而崩溃 我假设这是因为定义的顺序 但这合法吗 我可以使用样式 parent 属性来解决此问题 但对于只有一
  • 使用仪器工具定位泄漏

    我正在尝试使用泄漏工具查找我的应用程序中的泄漏 当应用程序启动时 我可以看到 106 个泄漏 但我很难找到它们 在图像中 您可以看到列表的一部分 但如何深入到生成泄漏的类或代码行 寻找泄漏并不是那么简单 你需要戴上侦探帽 从外套中拿出放大镜
  • java中的“字符串...”是什么? [复制]

    这个问题在这里已经有答案了 可能的重复 可变参数和 参数 https stackoverflow com questions 1656901 varargs and the argument Java 参数中3个点 https stacko
  • 为什么 string.Empty 比 "" 更推荐?

    Why is string Empty比更推荐 是因为当编译器解析代码时 来了 编译器会准备好读取一个字符串吗 但在string Empty编译器甚至不会准备好读取字符串 还有另一个原因 常量 由于其本质 是一个 静态是对某个应用程序域中所
  • 将字符串数组转换为字节数组

    好吧 在有人试图将其标记为重复之前 我是not要求将字符串转换为字节数组 我想要一个字符串数组 包含类似这样的内容 5 168 188 28 29 155 转换为字节数组 我已经搜索过 只能找到字符串到字节数组 这是完全不同的 谢谢 编辑
  • C++字符串解析思路

    我有另一个程序的输出 它更适合人类可读而不是机器可读 但无论如何我都会解析它 没什么太复杂的 然而 我想知道在 C 中执行此操作的最佳方法是什么 这更像是一个 一般实践 类型的问题 我研究了 Boost Spirit 甚至让它发挥了一些作用
  • 为什么两个函数有相同的地址?

    考虑这个函数模板 template
  • 从该函数内部确定函数名称(不使用回溯)

    在Python中 不使用traceback模块 有没有办法从该函数内确定该函数的名称 假设我有一个模块foo有一个函数bar 执行时foo bar 有没有办法bar知道bar的名字 或者更好的是 foo bar s name foo py
  • Python 中的扩展方法

    Python 有像 C 那样的扩展方法吗 是否可以调用如下方法 MyRandomMethod 在现有类型上 例如int myInt MyRandomMethod 您可以在 Python 代码中定义的类对象上添加您喜欢的任何方法 又名猴子修补
  • jQuery.remove(),分离 DOM 元素,但我仍然可以从代码中访问这些元素。如何避免泄漏?

    我知道 在具有大量 UI 元素且完全基于 Ajax 的应用程序中正确管理内存并不容易 在我的应用程序中 页面永远不会重新加载 但我想了解以下行为 我有一个根元素 一次必须附加一个子元素 将其视为根元素是应用程序容器 子元素是单个页面 每当我
  • Python 字符串格式 - 类型错误 - 格式字符串参数不足

    那么这个字符串有什么问题呢 我无法弄清楚为什么它说格式字符串没有足够的参数 我是 Python 新手 只是想弄清楚 编辑 这与建议的其他问题不同 另一个正在尝试做一些我什至没有涉及的疯狂数组事情 我只需要了解元组的基本概念以及字符串格式化的
  • 将事件处理程序分配给带括号和不带括号的方法之间的区别

    假设您有以下内容 function doStuff code 2 种说法有什么区别 window onload doStuff window onload doStuff 两个语句都立即调用该方法 但如果我使用第一个语句 我可以将 onlo
  • 错误:(1) 处的分配中的等级 0 和 1 不兼容

    我正在不规则网格上使用有限差分方法 这是代码的重要部分 IMPLICIT DOUBLE PRECISION A Z REAL 16 IPSI ICORR POT 20000 VA 20000 delta1 20000 delta2 2000
  • 将子字符串从 char* 复制到 std::string 的优雅方法

    我有这个char char line This is a great day string subLine 我要那个subLine会包括 is a great 从第 5 处复制 接下来的 10 个字符 有没有办法做到这一点而不是转换char
  • 如何忽略传递给函数的意外关键字参数?

    假设我有一些功能 f def f a None print a 现在 如果我有一本字典 比如dct a Foo 我可以打电话f dct 并得到结果Foo打印 但是 假设我有一本字典dct2 a Foo b Bar 如果我打电话f dct2
  • Python 按照层次结构按多个分隔符分割字符串

    我只想根据多个分隔符 例如 and 和 按顺序分割字符串一次 例子 121 34 adsfd gt 121 34 adsfd dsfsd and adfd gt dsfsd adfd dsfsd adfd gt dsfsd adfd dsf
  • 本地管理的广播接收器泄漏?

    当应用程序被系统杀死时 本地 即使用 LocalBroadcastManager 管理 BroadcastReceiver 是否有可能泄漏 我需要它的具体用例是我想在活动的 onCreate onDestroy 中注册 注销 Broadca
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • Java字符串查找和替换的最佳方法?

    我正在寻找 Java 中字符串查找和替换的最佳方法 这是一句话 我的名字叫米兰 人们都知道我叫米兰瓦西奇 我想用 Milan Vasic 替换 Milan 弦 但在我已经有 Milan Vasic 的地方 情况不应该是这样 搜索 替换后的结

随机推荐

  • hadoop用户文件权限

    我在 hortonworks 和 cloudera 中设置 hadoop 文件权限时遇到问题 我的要求是 1 create a new user with new group 2 create user directory in hdfs
  • 使用 AND 条件进行一对多搜索

    我有以下包含多种颜色的产品 我希望找到至少包含红色和绿色的产品 Product class String id List
  • 如何使用 Microsoft graph api 从 Office 365 恢复已删除的邮件

    我想恢复我们使用 Microsoft graph api 删除的邮件 我没有找到任何 api 来使用 api 来恢复或恢复已删除的邮件 Graph API 中没有恢复方法 MAPI 或 EWS 中也没有 当某个项目在 Exchange 中被
  • 在 vector.push_back() 导致重新分配后,如何让向量迭代器指向向量?

    我有一个函数void AddEntity Entity addtolist 将元素推回到vector但由于当元素添加到时大小和容量是相等的vector 向量重新分配并且iterator变得无效 然后 当我尝试增加迭代器时 由于迭代器无效 我
  • 为什么允许可变成员的协变子类型?

    可变集合的不变性 内置的理由mutablePython 中的集合类型有不变的两者都得到了很好的解释PEP 483 and PEP 484以及一个很好的说明性示例 专门说明了原因list是不变的Mypy 文档关于这个主题 class Shap
  • Android:扩展 SeekBar 时如何从 AccessibilityEvents 中消除语音文本?

    我的 Android 应用程序包含一个基于SeekBar 并且我想将自定义文本短语附加到我的控件以解释其对辅助功能的使用 我已经使用成功完成了此操作View setContentDescription text 当我请求将焦点集中在滑块控件
  • 使用控件名称作为字符串转换为控件[重复]

    这个问题在这里已经有答案了 我的 XIB 中有几个文本字段 和标签 在我的应用程序中的某个时刻 我动态构建一个包含控件名称的字符串 即文本字段之一 如何使用我创建的保存文本字段名称的字符串来引用实际的文本字段 例如 我有 txt1 txt2
  • Windows Phone 8 - 2 背景音频冲突并且两个应用程序都终止

    大约一周前 我为 Windows Phone 商店提交了一个在线后台广播流应用程序 该应用程序非常好 当我使用模拟器对其进行测试时 它在所有可能的领域都很好 但是当我提交它进行认证时 它失败了 根据错误日志 如果有人已经在音乐 视频中心播放
  • 使用嵌套和根级别数据的 Elasticsearch 嵌套聚合比率

    我感觉像是一个简单的聚合 我有一个文档 其计时代码如下 task start 2020 06 03T21 19 07 908821Z task end 2020 06 03T21 27 00 323790Z sub tasks key su
  • Visual Studio 2010下LNK2019错误

    我在 Visual Studio 2010 下使用以下文件创建了一个示例 C 项目 A h ifndef A H define A H include
  • 如何正确设置 ios 标志以进行流操作?

    我在 C 中输入了一个基本示例 其中我尝试将一个数字以十六进制形式打印到屏幕上 如下所示 include
  • IEnumerable 没有 Count 方法

    我有以下方法 public bool IsValid get return GetRuleViolations Count 0 public IEnumerable
  • 与 React 之外的功能组件通信

    我希望能够从正常 HTML 中的组件外部与我的 React 组件进行通信 由于将组件嵌入到另一个系统中而需要 我一直在研究这个 我看到了您可以添加组件的建议window通过在渲染的元素上添加引用 如下所示 ReactDOM render
  • 使用 Python 生成报告:PDF 或 HTML 到 PDF

    Using maptplotlib我创建了 9 个图表 使用命令将它们组合成一个 pdfsavefig 但是我需要能够在每个图下方显示统计分析 describe 最好的方法是什么 Pandas 可以包含一张带有绘图的表格 请参阅table夸
  • 为什么 DBI 会隐式地将整数更改为字符串?

    我有一个具有以下结构的 MySQL 表 alid bigint 20 ndip varchar 20 ndregion varchar 20 occ num int 3 Delta Flag int 1 从表中选择数据后 我将获取所有引用的
  • 最后使用 Javascript 加载一些图像

    嗨 我只是想知道这是否可能 我的网站上有很多图像 我已将它们设置为尽可能小的文件大小 有些图像用作幻灯片 但全部都一次性加载 有没有一种方法使用 javascript 使幻灯片图像最后加载 以便背景图像等首先加载 幻灯片最后加载 这些图像位
  • 访问路由器参数 VueJS

    我正在使用 Vuejs 创建一个博客 而且我对它还很陌生 简而言之 我有一个加载到屏幕上的动态元素列表 当您单击其中一个项目时 我想转到该页面以及其余数据 我遵循了与使用 React 时相同的流程 路由器 js export default
  • 将 numpy 整数数组传递给 c 代码

    我正在尝试编写 Cython 代码来将密集特征矩阵 目标向量对转储为 libsvm 格式 速度比 sklearn 的内置代码更快 我收到一个编译错误 抱怨将目标向量 整数的 numpy 数组 传递给相关 c 函数时出现类型问题 这是代码 i
  • 使用 dlib 进行狗脸检测 - 需要有关改进 recal 的建议

    我正在尝试使用 dlib 的猪金字塔检测器训练狗脸检测器 我使用哥伦比亚狗数据集 ftp ftp umiacs umd edu pub kanazawa CU Dogs zip 起初我的召回率为 0 但通过增加 C 值 我设法将训练集上的召
  • 返回分配的字符串导致内存泄漏

    在 Fortran 中返回可变长度字符串的建议解决方案来自this问题 function itoa i result res character allocatable res integer intent in i character r