¿Diferencia entre retorno 1, retorno 0, retorno -1 y salida?

Por ejemplo, considere el siguiente código:

int main(int argc,char *argv[])
{
   int *p,*q;
   p = (int *)malloc(sizeof(int)*10);
   q = (int *)malloc(sizeof(int)*10);
   if (p == 0)
{
    printf("ERROR: Out of memory\n");
        return 1;
}


   if (q == 0)
{
    printf("ERROR: Out of memory\n");
        exit(0);
}

   return 0;
}

Que hacereturn 0, return 1, exit(0) hacer en el programa anterior?exit(0) saldrá del programa total y el control saldrá del bucle, pero lo que sucede en caso dereturn 0, return 1, return -1.

Respuestas a la pregunta(6)

Su respuesta a la pregunta