Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: fafafa01 en 23 Junio 2016, 22:54 PM

Título: Malloc sin stdlib
Publicado por: fafafa01 en 23 Junio 2016, 22:54 PM
Buenas, he podido usar la función malloc sin especificar:

#include <stdlib.h>

¿alguien sabe a que se debe esto?
Título: Re: Malloc sin stdlib
Publicado por: fary en 23 Junio 2016, 22:56 PM
Que más cabeceras has añadido?
Título: Re: Malloc sin stdlib
Publicado por: AlbertoBSD en 23 Junio 2016, 22:57 PM
¿Que compilador estas usando?

Por ejemplo si estas usando gcc se pueden linkear librerias con -lmath etc..
Título: Re: Malloc sin stdlib
Publicado por: fafafa01 en 23 Junio 2016, 23:12 PM
las librerías que uso:

#include <stdio.h>
#include <math.h>


El compilador es tcc
Título: Re: Malloc sin stdlib
Publicado por: class_OpenGL en 24 Junio 2016, 00:42 AM
Es posible que el enlazador haya enlazado las funciones. El problema con no incluir la librería stdlib es que usas la función implícitamente, y eso es un problema porque el compilador no puede comprobar si los argumentos y el valor de retorno concuerdan. Mejor incluye stdlib y te evitas problemas
Título: Re: Malloc sin stdlib
Publicado por: MAFUS en 24 Junio 2016, 12:18 PM
Eso es magia...
o que el compilador incluye el archivo de cabecera por debajo porqué sabe que esto es un fallo común.
Título: Re: Malloc sin stdlib
Publicado por: class_OpenGL en 24 Junio 2016, 12:52 PM
Seguramente si le dice al compilador que le ponga las advertencias, le dirá que la función malloc se usa de forma implícita. Algo como esto:

main.c: In function 'main':
main.c:2:14: warning: implicit declaration of function 'malloc' [-Wimplicit-func
tion-declaration]
  int *algo = malloc(sizeof(int));
              ^
main.c:2:14: warning: incompatible implicit declaration of built-in function 'ma
lloc'
main.c:2:14: note: include '<stdlib.h>' or provide a declaration of 'malloc'
main.c:2:7: warning: unused variable 'algo' [-Wunused-variable]
  int *algo = malloc(sizeof(int));


Código usado:
int main() {
int *algo = malloc(sizeof(int));

return 0;
}


El programa ha compilado, sin tener que incluir la librería
Título: Re: Malloc sin stdlib
Publicado por: AlbertoBSD en 24 Junio 2016, 13:50 PM
Cita de: MAFUS en 24 Junio 2016, 12:18 PM
Eso es magia...


;-)  ;-) Jajajaja

Hay veces que  yo compilaba teniendo la funcion time:

Ya saben por aquello del random
srand(time(NULL)); Y sin incluir time.h Funciona.

Es cosa del compilador por que despues la probe en VC++ y si me pidio la libreria.

Saludos