0

在我们的生产环境中,当我们作为批处理的一部分执行 .so 文件时,我们总是遇到如下致命错误:

calloc 失败了 9088 字节日期 12-07-2013 01:55:05

您能否让我知道 calloc 内存问题的可能原因。

4

3 回答 3

2

这有很多可能的原因:

  1. 进程内存不足。相对不太可能,而且你已经忽略了这一点。
  2. 使用的控制信息calloc()已被覆盖损坏,导致程序内存不足的错误报告。这可能是因为您的程序在分配的内存范围之外写入。
  3. 报告错误的代码行写错了。

由于大小很小(9088 字节),您不太可能遇到算术溢出问题。

通常,建议您使用它valgrind来检测内存问题。但是,这在 AIX 上不可用。也许你有净化;这是完成这项工作的绝佳工具(但它不是免费软件)。

于 2013-07-12T13:50:16.017 回答
2

也许您应该检查“进程可以使用的 AIX 数据段的最大数量”是如何设置的(环境变量 LDR_CNTRL)。如果它告诉您数据大小是无限的,请参阅关于 aix的IBM Performance Tuning Guide 。ulimit

于 2013-07-12T13:22:59.410 回答
1

这背后可能有两个原因

1)你没有足够的内存

2)Calloc 没有获得请求大小的连续内存块。

在第一种情况下,您没有任何选择,但如果有第二种情况,那么您可以将一个 calloc 调用分解为 2.3..或更多调用以获得小块连续内存。

于 2013-07-12T13:01:50.217 回答