Calloc因字节而失败

时间:2013-07-12 12:55:12

标签: c unix aix

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

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

您能否告诉我calloc内存问题的可能原因。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

有很多可能的原因:

  1. 这个过程耗尽内存。相对不太可能,而且你已经打了折扣。
  2. calloc()使用的控制信息已被覆盖写入损坏,导致报告程序内存不正确。这可能是因为你的程序在分配的内存范围之外写了。
  3. 报告错误的代码行写错了。
  4. 由于大小很小(9088字节),因此不太可能遇到算术溢出问题。

    通常,建议您使用valgrind来检测内存问题。但是,这在AIX上不可用。也许你有Purify;这是一个很好的工具(但它不是免费软件)。

答案 2 :(得分:1)

这可能有两个原因

1)您没有足够的内存

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

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