我想创建一个可以放在测试主函数之前的函数,它将耗尽 malloc 的所有空间(导致将来的分配失败)。问题是,一旦函数完成,所有东西似乎都被释放了......
#include <stdlib.h>
void breakmalloc(void)
{
int *i;
int n;
n = 1;
i = &n;
while (n)
{
while (i)
{
i = malloc(n);
if (i)
n = n + n;
}
n = n / 2;
i = &n;
}
}
当我测试它时,它退出该函数,因此似乎所有空间都已用完,但一旦该函数完成,我就可以在将来的函数中分配其他内容。
最佳答案
由于内存已耗尽,我不知道使用您的技巧的测试结果是否正确处理绿色/红色。如果您的代码调用 malloc 来分配内存,并且您想测试它。我想你最好使用简单的技巧。
#ifdef TEST
# undef malloc
# define malloc(x) (NULL)
#endif
关于c - 如何创建一个用完所有分配内存的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44815464/