【问题标题】:Create a memory leak under LinuxLinux下创建内存泄漏
【发布时间】:2015-01-20 08:13:34
【问题描述】:

我使用开放式嵌入式创建了一个嵌入式自定义 Linux 发行版,我想测试我的系统的行为。我的测试用例是看看“如果用户空间应用程序产生内存泄漏”会发生什么。

所以出于测试原因,我想使用脚本 shell 或 C 创建内存泄漏?

谁能帮帮我?

【问题讨论】:

    标签: c shell memory memory-leaks embedded-linux


    【解决方案1】:

    这个函数会泄露:

    void leakingFunction()
    {
        int* a = malloc(100);
    }
    

    【讨论】:

      【解决方案2】:

      代码高尔夫?

      main(){for(;;)malloc(9999999);}
      

      【讨论】:

        【解决方案3】:

        很容易产生内存泄漏

        void func()
        {
          int *ptr = malloc(sizeof(int) * 1000);
          return;
        }
        

        您没有释放分配给指针 ptr 的内存,因此存在内存泄漏,因为此分配的内存不可用于其他应用程序,最终如果您继续这样做,那么您的内存就会用完。喜欢

        while(1)
        {
           int *ptr = malloc(sizeof(int) * 1000);
        }
        

        【讨论】:

          【解决方案4】:

          ee.c

          #include<stdio.h>
          #include<stdlib.h>
          #include<unistd.h>
          
           int main( void )
          {
              int *ptr = NULL;
          
              while ( 1 )
              {
                  ptr = (int*) malloc ( 1024 );
                  sleep ( 2 );
              }
              return ( 0 );
          }
          
          1. gcc -o 内存 ee.c

          mem_leak.sh

          #!/bin/bash
          echo " memory leak script started"
          ./memory
          
          1. chmod 777 mem_leak.sh
          2. ./mem_leak.sh

          【讨论】:

          • 另一个问题,如果我在被 OMM 杀手杀死之前退出它,系统将恢复我的程序分配的内存。造成永久性内存泄漏??
          • 不...一旦你的编退出,那么你编分配的所有内存都将被清除。
          猜你喜欢
          • 1970-01-01
          • 2011-04-03
          • 1970-01-01
          • 2016-12-24
          • 1970-01-01
          • 2018-11-28
          • 2014-03-02
          • 1970-01-01
          相关资源
          最近更新 更多