【问题标题】:How to automate a test to check if failed malloc's are handled properly? [duplicate]如何自动化测试以检查是否正确处理了失败的 malloc? [复制]
【发布时间】:2018-01-08 14:56:00
【问题描述】:

如何进行自动化测试来检查我的程序是否正确处理了失败的 malloc()?我正在使用 cmake 和 make 来构建。我已经在测试功能,但是当 malloc() 之类的返回 NULL 时,我没有测试。

【问题讨论】:

  • 与一个总是返回 NULL 的虚拟 malloc 链接,或在几次分配后返回 NULL

标签: c makefile automated-tests


【解决方案1】:

它通常是特定于操作系统的。

在 Linux(和大多数类 Unix 系统)上,malloc(3) 使用一些 system call 扩展虚拟地址空间,例如 mmap(2)。然后您可以使用setrlimit(2)RLIMIT_AS 来限制此类调用(当mmap 失败时,malloc 将失败并显示ENOMEM)。

实际上,您将首先禁用memory overcommitment,然后在运行测试的shell 中使用bash builtin ulimit(与-v)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多