缺乏释放会导致什么样的问题?

2024-03-06

我目前遇到问题

*** glibc detected *** ./efit: free(): invalid next size (fast): 0x00000000006127f0 ***

带有通常的内存映射和回溯信息glibc错误。但是,我无法找到这个问题的原因。看起来(基本上)我的整个程序在发生这种情况时已经完成了。我在网上读到的一件事是,这可能是由于缺乏释放造成的。

现在,我一直在运行该程序,而没有释放一些数组(我的印象是释放可能会导致内存泄漏,但这只会影响程序运行时的性能和效率)。现在,当我重新启动程序时,我遇到了这个错误。

我以前执行的程序没有释放数组的情况是否有可能“回来困扰我”,因为我试图写入的先前执行中存在未释放的内存?

如果不是,我对这个错误完全感到困惑。关于我应该从哪里开始查找和/或我应该如何调试以找到它的任何线索?

就其价值而言,我正在使用 gfortran 进行编译

编辑: 虽然编译选项一开始并没有直接识别出这个问题,但它帮助我解决了这个问题。我使用的是整数变量iat for iat=1,natoms in a do循环,然后几行之后,我想iat描述了范围内的不同整数1,natoms。我正在引用数组边界之外的数组。当我更正编译选项列出的一些警告时,此错误变成了对该错误的更清晰的描述:Fortran runtime error: Index '7' of dimension 1 of array 'isnormed' above upper bound of 6.

是什么让这个错误第一次没有出现?编译警告告诉我的我所做的唯一更改是更改read(fout, '(a)'), line100' toread(fout, '(a)') line100' (删除逗号)并更改旧式字符描述character*100 line100到较新的character(100) line100描述。


程序上一次运行的错误不会影响下一次运行。操作系统加载新版本的可执行文件并为其提供内存。只有当您让程序将信息写入文件并在下次运行时读入时,它们才能传输信息。

当程序完成时,操作系统会自动释放内存。此外,对于 Fortran >=95,当过程返回时,Fortran 将自动释放过程本地的可分配数组。

您很可能遇到内存使用问题,该问题正在破坏描述程序使用的内存的内部结构。对于 Fortran,这可以通过调用者和被调用者之间的参数不匹配、索引超过数组末尾或使用指针来实现。你使用指针吗?如果没有,在这个时代,前两种通常很容易防范。将您的过程放入模块中并“使用”这些模块。这将允许编译器检查参数一致性。使用下标运行时检查选项进行编译。这将查明您是否正在索引超出数组末尾并存储在其他内存中。

使用 gfortran,尝试以下编译器选项: -O2 -fimplicit-none -Wall -Wline-truncation -Wcharacter-truncation -Wsurprising -Waliasing -Wimplicit-interface -Wunused-parameter -fwhole-file -fcheck=all -std=f2008 -迂腐的-fbacktrace。如果其中一些识别出太多警告,则此问题的重要警告是 fcheck=all,甚至更窄,fcheck=bounds。

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

缺乏释放会导致什么样的问题? 的相关文章

  • 从 Fortran 字符串中提取单个字符

    我需要一个程序将基数 a 转换为基数 b 其中基数 a 和 b 可以是从 2 到 36 我的想法是使用字符串作为数字 作为中介转换为基数 10 然后从基数 10 转换为基数 b 由于我是 Fortran 新手 我不太理解函数和子字符串 现在
  • 如何包装 fortran write 语句

    我想包装 fortran写语句 http software intel com sites products documentation doclib stdxe 2013 composerxe compiler fortran lin 在
  • SQL Server在查询执行后不释放内存

    我想我在这里有一个很多人可能遇到过的基本问题 当我在 SQL Server 中运行查询时 它将在内存中加载查询执行所需的所有数据 例如 如果存在联接 那么它将从这两个表加载必要的数据 但是当查询完成执行内存时SQL Server 消耗的数据
  • 查找 Java 中的内存使用情况

    以下是我需要解决的场景 我想出了两种解决方案 我需要维护从数据库获取的数据的缓存 以便在 Swing GUI 上显示 每当我的 JVM 内存超过其分配内存的 70 时 我需要警告用户有关过度使用的情况 一旦 JVM 内存使用率超过 80 那
  • “损坏的双链表”是什么意思

    我最近从我的 PHP 中收到以下错误 WARNING pool www child 42475 said into stderr glibc detected php fpm pool www corrupted double linked
  • 我什么时候应该从正在观察持久模型类的正在关闭的 ViewController 类中调用removeObserver:forKeyPath?

    我有一个ViewController具有一个属性的类 该属性是我想要观察模型属性变化的模型 在我的模型对象中 我有一个在应用程序后台定期更新的属性 当它更新时 我需要在我的内部执行代码ViewController 为此 我从我的模型中创建了
  • VS2010 .NET 内存分析 - 非常慢

    运行 VS2010 的 NET 内存分配分析需要很长时间才能完成 该程序本身运行了大约 3 分钟并生成了 35GB 的内存分配 探查器的输出文件约为 28GB 报告分析流程接管三个小时 在具有 8GB RAM 的双 Xeon 上 即可完成
  • RenderTargetBitmap 内存泄漏

    我正在尝试使用 RenderTargetBitmap 渲染图像 每次我从 RenderTargetBitmap 创建一个实例来渲染图像时 内存都会增加 完成后内存永远不会释放 这是代码 RenderTargetBitmap rtb new
  • 为什么 new()/delete() 比 malloc()/free() 慢?

    为什么new delete 比malloc free 慢 EDIT 感谢到目前为止的回答 如果您有new 和delete 的标准C 实现规范 请指出 谢谢 看一下这段C代码 struct data pd malloc sizeof stru
  • 内存泄漏?!在“array_map”中使用“create_function”时,垃圾收集器是否正确?

    我在 StackOverflow 上找到了以下解决方案 从对象数组中获取特定对象属性的数组 PHP 从对象数组中提取属性 https stackoverflow com questions 1118994 php extracting a
  • 使用 OpenMP 编译会导致内存泄漏

    根据 valgrind 的说法 使用 OpenMP 编译简单的 hello world 程序时可能会导致内存泄漏 这是没有意义的 因为 hello world 程序并没有有意使用任何 OpenMP 功能 假设下面的程序名为hi c并根据 g
  • 指定 gfortran 应该在其中查找模块的目录

    我目前基于模块来编译程序 例如主程序foo这取决于模块bar 如下 gfortran c bar f90 gfortran o foo exe foo f90 bar o 当foo f90 and bar f90位于同一目录中 如何指定 g
  • 错误:“std::this_thread”尚未声明

    我尝试使用 std this thread sleep for 函数但收到错误 error std this thread has not been declared 包括标志 GLIBCXX USE NANOSLEEP 还需要什么来强制它
  • 设置 MetaspaceSize 的指南 - java 8

    64 位服务器的 MetaspaceSize 默认值是多少 我在官方文档中没有找到它 我观察到 在服务器 JVM 进程中 GC 频率有时会变高并持续增长 如果我重新启动服务几次 它就会恢复稳定 我认为这是由于 JRE 升级造成的 JVM 堆
  • 如何以编程方式找出我的 PermGen 空间使用情况?

    我正在尝试诊断java lang OutOfMemoryError PermGen Space在 Sun 的 Hotspot JVM 上运行时出现错误 并且想知道我的程序在不同时刻使用了多少 PermGen 空间 有没有办法以编程方式找出这
  • 如何在Fortran代码中将二维数组转换为一维数组?

    如何将 r i j 转换为一维数组以便可以轻松地对数字进行排序 program sort implicit none character CN 8 O 7 integer j iconf nconf integer i nbins t in
  • getaddrinfo在程序中调用assert

    我正在使用 libcurl 开发一个程序 该程序创建一个线程 该线程又使用 libcurl 发出 HTTP 请求 但有时程序会因错误而崩溃 netlink 描述符上出现意外错误 9 在curl中关闭AsynchDNS之后 但问题依然存在 据
  • Swift 5 MacOS 图像调整大小内存问题

    我是使用 Swift 进行 Mac OS 应用程序开发的新手 但我尝试制作简单的 ImageResizer 应用程序 我必须调整 50k 图像的大小 10个小时后 内存已增加到近120GB 我以为 Swift 也有垃圾收集器 为什么它可以增
  • 操作系统什么时候清除进程的内存

    进程在某些操作系统上成功或异常终止 操作系统何时决定擦除分配给该进程的内存 数据 代码等 在退出时或当它想为新进程分配内存时 这个清除内存分配过程在所有操作系统 winXP Win7 linux Mac 上都相同吗 据我了解 页表具有该进程
  • 单元测试内存泄漏

    我有一个应用程序存在大量内存泄漏 例如 如果打开一个视图并关闭它 10 次 我的内存消耗会增加 因为视图没有完全清理 这些是我的内存泄漏 从测试驱动的角度来看 我想编写一个测试来证明我的泄漏 并 在修复泄漏之后 断言我修复了它 这样我的代码

随机推荐

  • java中多级继承中构造函数调用的顺序[重复]

    这个问题在这里已经有答案了 c07 Sandwich java Order of constructor calls package c07 import com bruceeckel simpletest import java util
  • spring错误没有JdbcTemplate类型的合格bean

    我有一个正在创建的 Spring Boot 应用程序Datasource and JdbcTemplate手动在我的配置中 因为我需要解密数据源密码 我正在使用 tomcatDataSource org apache tomcat jdbc
  • PUT 请求中的 100-Continue 是什么意思?

    我在某些 PUT 请求 上传文件 中看到 Expect 100 continue 这是什么意思 应该发生的情况是 您应该发送带有以下内容的请求标头 Expect 100 continue 标头 然后 在发送标头之后 发送有效负载之前 您应该
  • Xcode Beta3 中的 CMutablePointer 和 CConstPointer 发生了什么?

    Xcode Beta3 中的 CMutablePointer 和 CConstPointer 发生了什么 在 Beta2 中成功编译的代码失败并出现错误 Use of undeclared type CMutablePointer 分别使用
  • SetConsoleCtrlHandler例程问题

    我正在用 C 编写一个控制台应用程序 我使用 SetConsoleCtrlHandler 来捕获关闭和 CTRL C 按钮 这允许我的所有线程正确停止和退出 其中一个线程执行一些需要一些时间才能完成的保存 并且我有一些代码需要在控制台 cr
  • 动态函数列表并动态调用它们

    我希望能够将各种静态方法存储在列表中 然后查找它们并动态调用它们 每个静态方法都有不同数量的参数 类型和返回值 static int X int int static string Y int int string 我想要一个可以将它们全部
  • 如何在Android中获取远程设备自定义蓝牙名称?

    我想在 Android 中检索远程蓝牙设备的自定义名称 我说的是在 设置 蓝牙 和配对设备下的手机设置中找到的名称 例如 我有一个名为 DoorControl 的远程蓝牙设备 在 设置 gt 蓝牙 gt 配对设备 下 我已将设备重命名为 C
  • 为什么以及何时创建多模块 Maven 项目?

    我有一个关于 Maven 多模块项目的一般性问题 何时以及为什么要这样做 Esko Luontola 的回答 将项目拆分为多个模块很有用 例如 这些模块需要单独部署 可能会被误解 如果您有要单独部署的模块 则情况恰恰相反 在这种情况下 您永
  • 尝试让网络错误警报显示在 iPhone 应用程序上?

    好的 我正在尝试让这个应用程序显示网络错误警报代码 我添加了 SystemConfiguration framework 框架和 Apple 的 Reachability 示例代码 这是 viewcontroller h 文件 import
  • 使用一个查询更新多行?

    我在这里发现了一些可以更新一个字段的东西 http www karlrixon co uk articles sql update multiple rows with Different values and a single sql q
  • 将空格分隔的条目拆分为 R 中的新列

    我正在编写一项输出 csv 文件的调查 在此 csv 中 我有一些以空格分隔的条目 它们代表多选问题 例如具有多个答案的问题 最后 我想将这些空格分隔的条目解析到它们自己的列中 并为它们创建标题 这样我就知道它们来自哪里 例如 我可以从此开
  • MongoDB 将两个数组内的值相乘

    我需要帮助将对象数组中的值相乘以获得输出 这是我的 JSON 1 id ObjectId 5b919a785cb288f7d5311846 nome Antonio cod produtor PR001 morada rua Rua dos
  • 强制聚合之间不变量的最佳方法?

    处理聚合之间一致性的最佳方法是什么 以 Vaughn Vernon 书中的示例为例 您有 BacklogItem 聚合和 SprintAggregate 当 BacklogItemEvent 引发时 事件处理程序会捕获它并尝试更新 Spri
  • SKLabelNode 删除前导和尾随空格 - 我怎样才能阻止它?

    我想创建一个 SKLabelNode 它应该始终具有相同的长度 对于猜词游戏 不幸的是 SKLabelNode 决定始终切断任何前导和尾随空格 文档中未描述此行为 我怎样才能避免 关闭这种行为 如果您只是想让标签对齐以便它们右对齐 那么请使
  • WPF TreeView:如何使控件相对于每个 TreeViewItem 对齐,但仍然获得标题文本的缩进效果?

    这是我想要实现的目标的直观想法 我希望左侧和右侧的所有按钮都垂直对齐 无论 TreeViewItem 位于树中的哪个位置 我在实现这种效果时遇到了困难 同时也让标题以典型的嵌套方式缩进 我最近的尝试涉及修改 TreeViewItem 模板
  • 重新打开最近关闭的 Excel 实例

    如果我使用下面的代码关闭当前打开的所有 Excel 实例 我需要使用什么来重新打开刚刚关闭的所有 Excel 实例 我知道我必须更改以下内容才能将文件路径保存在某处 但只是不确定实际的代码应该是什么 Public Sub CloseAllE
  • 如何从 Ubuntu 中删除 Elasticsearch?

    我认为我已经从我的计算机中删除了elasticsearch 但我仍然有一些疑问 当我输入 service elasticsearch status I get elasticsearch service 已加载 未找到 原因 没有此类文件或
  • WOWZA + RTMP + HTML5 播放?

    我有 Wowza 并测试 RTMP 流 现在就像 Wowza RTMP 示例一样 我现在可以 Playback via Flash http www wowza com gettingstarted http www wowza com g
  • 正则表达式 - 查找字符串中的特定数字

    我一整天都在与正则表达式作斗争 找不到解决方案 我试图在包含数字 分号 冒号和空格的字符串中找到一些特定的数字 出于我们的目的 假设我正在寻找号码1234 以下是一些应该匹配的示例 每一行都是不同的字符串 1234 1234 1234 56
  • 缺乏释放会导致什么样的问题?

    我目前遇到问题 glibc detected efit free invalid next size fast 0x00000000006127f0 带有通常的内存映射和回溯信息glibc错误 但是 我无法找到这个问题的原因 看起来 基本上