2015-01-30 2 views
-5

Я просто хотел бы знать способ обработки ошибки распределения памяти в недействительной функцииПамяти Обработка отказа Alloc в недействительной функции

например: -

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. */ 

     } 

    } 
+2

Ну, что же вы хотите, чтобы произошло, если он не выделяет память? – immibis

+0

Так как это огромная программа, мне просто нужно обеспечить их отсутствие разыменования указателя и отсутствие сбоя. – Sanman

+0

Вы можете использовать 'return;', чтобы возвращать любое время из функции, возвращающей 'void'. –

ответ

2

Если выделение памяти вы можете использовать возврат заявление.

В недействительных возвращаемых функциях вы не можете вернуть значения, но вы можете использовать пустой оператор return.

Таким образом, вы можете использовать, как это, после звонка malloc.

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

Если тип функции также недействителен, вы можете вернуться из функции. использование

return; 

ie, no return value. просто вернувшись с той точки, которую вы хотите вернуть.

В вашем случае

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

    } 

} 
-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); 
} 
+0

Перед выходом он вызовет функцию. –

2

return ; //called as empty return statement.

можно использовать для функций с типом возвращаемого void.

В коде, после таНос просто использовать

return ; 
Смежные вопросы