如何模拟内存分配失败?

And*_*anu 4 c testing memory-leaks memory-management mocking

我想广泛测试一些 C 代码的内存泄漏。

在我的机器上,我有 4 Gb 的 RAM,因此动态内存分配不太可能失败。如果内存分配失败,我仍然想看看代码的解释,看看恢复机制是否足够“强大”。

你有什么建议?如何模拟内存规格较低的环境?我如何模拟我的测试?

编辑:我希望我的测试独立于代码。我只能“访问”我正在测试的库中不同函数的返回值。我不应该在我正在测试的代码中编写“测试逻辑”。

Bri*_*ndy 6

制作一个包装器 malloc 并免费,您可以将自己的逻辑放在那里,以备不时之需。

然后:

#define malloc(X) (myMalloc(X))
#define free(X) (myFree(X))
#define realloc(X, Y) (myRealloc(X, Y))
#define calloc(X, Y) (myCalloc(X, Y))
#define valloc(X) (myValloc(X))
Run Code Online (Sandbox Code Playgroud)

你可以#define#undef宏,只要你想在你的代码。