
Problema curioso con memoria dinamica en c, malloc y printf.
Publicado por anonymous (2 intervenciones) el 18/01/2019 04:40:43
Hola, buen dia.
Gracias por leerme.
Recientemente estaba repasando algunos códigos de lenguaje c que utilizan la función malloc, este es el código:
Lo que se hace es detectar el retorno de NULL en la función malloc(). Si al ejecutar el programa, el ejecutor del programa oprime la tecla return (enter), se mostrará en monitor “Sin asignación de memoria”. De otra forma se mostrará dos veces lo escrito por el ejecutor del programa.
Mi problema radica en que cuando das enter y la condición NULL se cumple, nunca se imprime en pantalla el mensaje sin asignación de memoria, solo se muestra una tabulación, depsues entra la función getchar() y el programa se cierra.
Adjunto imagen para que lo aprecien

No se como puedo solucionar ese error de mi computador, ¿Qué podría ser?, en otro ordenador funciona como debería.
Gracias por leerme.
Recientemente estaba repasando algunos códigos de lenguaje c que utilizan la función malloc, este es el código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
char *a, b[80];
gets(b);
if((a=(char *)malloc(strlen(b)))==NULL)
{
printf("Sin asignacion de memoria\n");
getchar();
free(a);
exit(0);
}
strcpy(a,b);
printf("%s\t%s",a,b);
getchar();
free(a);
}
Lo que se hace es detectar el retorno de NULL en la función malloc(). Si al ejecutar el programa, el ejecutor del programa oprime la tecla return (enter), se mostrará en monitor “Sin asignación de memoria”. De otra forma se mostrará dos veces lo escrito por el ejecutor del programa.
Mi problema radica en que cuando das enter y la condición NULL se cumple, nunca se imprime en pantalla el mensaje sin asignación de memoria, solo se muestra una tabulación, depsues entra la función getchar() y el programa se cierra.
Adjunto imagen para que lo aprecien

No se como puedo solucionar ese error de mi computador, ¿Qué podría ser?, en otro ordenador funciona como debería.
Valora esta pregunta


0