在C中创建Out of Memory条件的最快方法是什么?

时间:2014-02-23 07:01:09

标签: unit-testing out-of-memory c99

我正在为我正在开发的库编写单元测试。无法模拟库实现。单元测试是关于在程序内存不足时返回特殊值。

我想出了这个天真的解决方案:

// Fillup memory
int *p = NULL
do {
    p = malloc(sizeof(int));
    // store p somewhere to release it later
} while(p);
// Got out of memory :)

有没有比这个解决方案更快地填充内存没有增加用malloc分配的内存块大小?

PS:禁止使用第三方内存分配器:)

2 个答案:

答案 0 :(得分:1)

显然 - 但是根据C ++实现 - 你可以在多个线程中做到这一点。除此之外 - 没有。

答案 1 :(得分:1)

尝试分配更大的内存块而不是sizeof(int)。 例如1KB并且当分配失败时继续减少循环中的size参数。 这样做直到分配失败,足够小 - 可能是1 B。