gpt4 book ai didi

c - System C 命令和内存限制?

转载 作者:太空宇宙 更新时间:2023-11-04 02:20:10 27 4
gpt4 key购买 nike

好的,所以我目前正在尝试调试 win2003 服务器上的问题。基本上我们有一个调用 C 的 system() 函数的古老程序。现在我基本上追踪到 system() 运行应用程序时的事实。该应用程序只能访问大约 500 兆字节左右的内存。然而,如果我自己手动运行该应用程序,它运行良好。

系统命令和内存是否存在某种限制因素?

编辑

好的,可以详细说明。我们有一个自动处理系统,它基本上接受一个输入文件并在其上运行一堆应用程序。这在过去 12 年左右的时间里一直运作良好。但是现在我们正在使用 ArcEngine(ESRI 图像处理)处理越来越大的图像(遥感)。现在我们基本上有以下内容:

输入文件进来 -> 被处理系统获取 -> 通过调用 system() 依次执行一组预定义的任务。

现在,当涉及到 ESRI 应用程序时,系统会在尝试将图像读入内存时崩溃。我无法通过部分读取图像文件对此做任何事情,因为这就是他们的 sdk 的工作方式。此外,我刚刚通过创建一个非常简单的 C 程序来进行测试,该程序强制分配内存并查看它何时崩溃。它几乎恰好在 512MB 左右崩溃。我在互联网上四处张望,找不到任何东西。 =/...

编辑 2

我刚刚做了一些时髦的测试。我基本上写了一个小的 C 程序,通过 system() 调用应用程序。并称之为,它在完全相同的地方崩溃。当我调用这个程序时,系统有 2.5GB 可用内存(共 3 个)。然后我基本上写了一个使用 subprocess 和 popen 的 python 脚本,它运行良好。将python脚本添加到自动处理系统也运行正常。

这可能是什么原因?

编辑 3

Python 脚本和处理系统都以同一用户身份运行。唯一的区别是处理系统作为服务运行,以用户身份登录。

最佳答案

您说如果您在自动处理系统之外手动运行程序,程序运行良好。您能否修改程序,使其在系统处理图像时定期显示可用内存量?如果在第一次调用 SDK 之前得到一个空闲内存值,那么就可以确定 SDK 在处理图像时使用了多少内存。如果结果超过 512 MB(或任何您的限制),那么您就知道问题出在 SDK 需要的内存比您可用的内存多。

如果您不能中断图像处理,则需要创建一个定时器程序来定期显示可用内存量。

关于c - System C 命令和内存限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1499855/

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