6

在我们的应用程序模块之一中, calloc() 失败并返回 NULL。它尝试分配的内存量是 9292 字节的结构。操作系统是 AIX 7.1 并运行 VIOS 2.2.1.3。

这台机器有 2+GB 内存,似乎没有内存不足的问题。相同的应用程序模块在其他一个盒子上运行良好,它与有问题的盒子具有相同的配置。以下是两个盒子的内存片段,它们是相同的!

工作箱:

RLIMIT_AS (无限) (无限)
RLIMIT_CORE 1073741312(无限)
RLIMIT_CPU (无限) (无限)
RLIMIT_DATA 134217728(无限)
RLIMIT_FSIZE (无限) (无限)
RLIMIT_NOFILE 2000(无限)
RLIMIT_RSS 33554432(无限)
RLIMIT_STACK 33554432 2147483646

有问题的盒子:

RLIMIT_AS (无限) (无限)
RLIMIT_CORE 1073741312(无限)
RLIMIT_CPU (无限) (无限)
RLIMIT_DATA 134217728(无限)
RLIMIT_FSIZE (无限) (无限)
RLIMIT_NOFILE 2000(无限)
RLIMIT_RSS 33554432(无限)
RLIMIT_STACK 33554432 2147483646

我一无所知,因为无法真正弄清楚为什么 calloc() 甚至在这个盒子上的 9292 字节都失败了。

谢谢

4

1 回答 1

1

尝试 calloc(1, sizeof(ifp_handle_t)); 而不是 calloc(sizeof(ifp_handle_t), 1); 我可能错了,但似乎你颠倒了参数。

于 2012-11-06T13:38:59.963 回答