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' intune machine 64 bits peut ne pas être la même que la taille d'un pointeur ( intpeut ê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 ints dans la convention d'appel utilisée.
malloc(). GCC dit: warning: incompatible implicit declaration of built-in function 'malloc'aussi.
stdlib.hne pas être inclus?