Je suis tombé sur le puzzle C suivant:
Q: Pourquoi le programme suivant fonctionne-t-il correctement sur IA-64, mais fonctionne-t-il correctement sur IA-32?
int main()
{
int* p;
p = (int*)malloc(sizeof(int));
*p = 10;
return 0;
}
Je sais que la taille d' int
une machine 64 bits peut ne pas être la même que la taille d'un pointeur ( int
peut être 32 bits et le pointeur 64 bits). Mais je ne sais pas comment cela se rapporte au programme ci-dessus. Des idées?
#include stdlib.h
(pour malloc)
#include <stdlib.h>
, c'est parfaitement trouvé, mais ce n'est pas dans la question.
sizeof(int) == sizeof(int*)
, par exemple, des pointeurs étaient renvoyés via un registre différent de int
s dans la convention d'appel utilisée.
malloc()
. GCC dit: warning: incompatible implicit declaration of built-in function 'malloc'
aussi.
stdlib.h
ne pas être inclus?