c - 如何创建一个用完所有分配内存的函数

标签 c linux

我想创建一个可以放在测试主函数之前的函数,它将耗尽 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/

相关文章:

R 的 pipe() 函数和 Ubuntu 控制台给出不同的结果

linux - "Syntax error near unexpected token ` crontab '"当尝试在一行中添加 cron 作业作为 sudo 时

c - ld链接器在创建共享库时从静态库中删除目标文件

c - 如果条件不成立

c - strtok_r 上的段错误

c - 将图划分为三顶点图,使边的权重之和最小化

java - 要用 Java 编写,我在哪里可以找到 H.323 消息协议(protocol)的详细信息?用于 IP 到 IP 通信

c++ - 接收数据包发送后,等待功能等待

Node.js 子进程以 SIGTERM 退出

c - 尝试从文件中获取字符串并访问字符串中的各个字母时程序崩溃