El kernel mata al siguiente programa cuando se agota la memoria. Me gustaría saber cuándo se debe asignar la variable global a "ENOMEM".¿Cuándo se debe asignar errno a ENOMEM?
#define MEGABYTE 1024*1024
#define TRUE 1
int main(int argc, char *argv[]){
void *myblock = NULL;
int count = 0;
while(TRUE)
{
myblock = (void *) malloc(MEGABYTE);
if (!myblock) break;
memset(myblock,1, MEGABYTE);
printf("Currently allocating %d MB\n",++count);
}
exit(0);
}
consejos Así como adicionales. No eche el retorno de 'malloc'. Lanzarlo a 'void *' es particularmente extraño ya que * es * el tipo de devolución. Si sientes la necesidad, probablemente hayas olvidado incluir "stdlib.h". Entonces los compiladores modernos de C (y en Linux todos son modernos en ese sentido) tienen un tipo booleano. Incluya "stdbool.h" y use 'bool',' false' y 'true' apropiadamente. –