Marca error en sintaxis

Iniciado por hzre, 10 Noviembre 2020, 04:15 AM

0 Miembros y 1 Visitante están viendo este tema.

hzre


#include<stdio.h>
#include<string.h>
#include<string.h>
int main(){
int *p1;
p1=malloc(sizeof(int));
if(p1==NULL){
printf("Memoria Llena \n");
}else{
printf("Hay Espacio \n");
*p1=15;
printf("\n\n%i",*p1);
}
free(p1);
printf("\n\n%i\n",*p1);
return 0;
}




MOD: Etiquetas de Código GeSHi insertadas

K-YreX

El error como tal está en las cabeceras.
Estás incluyendo dos veces <string.h> cuando no la usas para nada y no estás incluyendo <stdlib.h> que es la que contiene las funciones malloc() y free().

Supongo que es un programa de prueba porque digamos que no sirve de mucho imprimir el valor de un puntero cuando ya lo has liberado.

Además es aconsejable castear el valor de retorno de malloc() ya que es <void*>:
int *p = (int*)malloc(sizeof(int));

Y en el caso de que no haya espacio para reservar el puntero, el trozo del if-else funcionará bien pero al llegar a la línea 14, intentarás liberar una memoria que no está reservada... -> Error.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;