【发布时间】:2018-01-08 14:56:00
【问题描述】:
如何进行自动化测试来检查我的程序是否正确处理了失败的 malloc()?我正在使用 cmake 和 make 来构建。我已经在测试功能,但是当 malloc() 之类的返回 NULL 时,我没有测试。
【问题讨论】:
-
与一个总是返回
NULL的虚拟 malloc 链接,或在几次分配后返回NULL。
标签: c makefile automated-tests
如何进行自动化测试来检查我的程序是否正确处理了失败的 malloc()?我正在使用 cmake 和 make 来构建。我已经在测试功能,但是当 malloc() 之类的返回 NULL 时,我没有测试。
【问题讨论】:
NULL 的虚拟 malloc 链接,或在几次分配后返回 NULL。
标签: c makefile automated-tests
它通常是特定于操作系统的。
在 Linux(和大多数类 Unix 系统)上,malloc(3) 使用一些 system call 扩展虚拟地址空间,例如 mmap(2)。然后您可以使用setrlimit(2) 和RLIMIT_AS 来限制此类调用(当mmap 失败时,malloc 将失败并显示ENOMEM)。
实际上,您将首先禁用memory overcommitment,然后在运行测试的shell 中使用bash builtin ulimit(与-v)。
【讨论】: