void函数中的内存分配失败处理

时间:2015-01-30 04:17:56

标签: c memory-management

我只是想知道在void函数中处理内存分配失败的方法

e.g: -

    void func()
    {
      struct stack *p;
      p = malloc(sizeof(struct stack));
      if(p == NULL)
      {
        /*here is where my confusion is,I cant return as the function is of 
type void, and I have to do the mem check compulsorily. */

      }

    }

4 个答案:

答案 0 :(得分:2)

如果内存分配失败,您可以使用return语句。

  

在void返回函数中,你不能返回值,但是你可以使用空的return语句。

所以你可以在调用malloc之后使用这样的。

if ( p == NULL ) {
      printf("Memory allocation failed\n");
      return;
}

答案 1 :(得分:2)

如果函数类型也为void,则可以从函数返回。使用

return;

即没有返回值。从你想要归来的地方返回。

在你的情况下

void func()
{
  struct stack *p;
  p = malloc(sizeof(struct stack));
  if(p == NULL)
  {
    printf("memory allocation failed\n");
    return; //just return

  }

}

答案 2 :(得分:2)

return ; //called as empty return statement.

可用于返回类型为void的函数。

在你的代码中,在malloc之后只需使用

return ;

答案 3 :(得分:-1)

你可以使用atexit:

#include <stdio.h>
#include <stdlib.h>

void functionA ()
{
   printf("This is functionA not able to allocate the memory\n");
}


 void func()
    {
      struct stack *p;
      atexit(functionA );
      p = malloc(sizeof(struct stack));
      if(p == NULL)
      {
exit ( 0 );
}

return ( 0 );
}