Me encontré con el siguiente acertijo C:
P: ¿Por qué el siguiente programa se produce por defecto en IA-64, pero funciona bien en IA-32?
int main()
{
int* p;
p = (int*)malloc(sizeof(int));
*p = 10;
return 0;
}
Sé que el tamaño de int
en una máquina de 64 bits puede no ser el mismo que el tamaño de un puntero ( int
podría ser de 32 bits y el puntero podría ser de 64 bits). Pero no estoy seguro de cómo se relaciona esto con el programa anterior. ¿Algunas ideas?
#include stdlib.h
(para malloc)
#include <stdlib.h>
, se encuentra perfectamente, pero esa no es la cuestión.
sizeof(int) == sizeof(int*)
, por ejemplo, los punteros se devuelven a través de un registro diferente a int
s en la convención de llamada utilizada.
malloc()
. GCC dice: warning: incompatible implicit declaration of built-in function 'malloc'
también.
stdlib.h
no estar incluido?