我正在为我正在开发的库编写单元测试。无法模拟库实现。单元测试是关于在程序内存不足时返回特殊值。
我想出了这个天真的解决方案:
// 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:禁止使用第三方内存分配器:)
答案 0 :(得分:1)
显然 - 但是根据C ++实现 - 你可以在多个线程中做到这一点。除此之外 - 没有。
答案 1 :(得分:1)
尝试分配更大的内存块而不是sizeof(int)。 例如1KB并且当分配失败时继续减少循环中的size参数。 这样做直到分配失败,足够小 - 可能是1 B。