Foro de elhacker.net

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:

Código
  1. #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:
Código
  1. #include <stdio.h>
  2. #include <math.h>
  3.  

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:

Código:
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:
Código
  1. int main() {
  2. int *algo = malloc(sizeof(int));
  3.  
  4. return 0;
  5. }

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
Eso es magia...


 ;-)  ;-) Jajajaja

Hay veces que  yo compilaba teniendo la funcion time:

Ya saben por aquello del random
Código
  1. 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