我只是想知道在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. */
}
}
答案 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 );
}