Mi sono imbattuto nel seguente puzzle C:
D: Perché il seguente programma segfault su IA-64, ma funziona bene su IA-32?
int main()
{
int* p;
p = (int*)malloc(sizeof(int));
*p = 10;
return 0;
}
So che la dimensione di intsu una macchina a 64 bit potrebbe non essere la stessa della dimensione di un puntatore ( intpotrebbe essere di 32 bit e il puntatore potrebbe essere di 64 bit). Ma non sono sicuro di come questo si riferisca al programma di cui sopra. Qualche idea?
#include stdlib.h(per malloc)
#include <stdlib.h>, è perfettamente trovato, ma non è questo il problema.
sizeof(int) == sizeof(int*), se ad esempio i puntatori venissero restituiti tramite un registro diverso per ints nella convenzione di chiamata utilizzata.
malloc(). GCC dice: warning: incompatible implicit declaration of built-in function 'malloc'anche.
stdlib.hnon essere inclusi?