Ich bin auf folgendes C-Puzzle gestoßen:
F: Warum ist das folgende Programm auf IA-64 fehlerfrei, funktioniert aber auf IA-32 einwandfrei?
int main()
{
int* p;
p = (int*)malloc(sizeof(int));
*p = 10;
return 0;
}
Ich weiß, dass die Größe inteines 64-Bit-Computers möglicherweise nicht der Größe eines Zeigers entspricht ( int32 Bit und der Zeiger 64 Bit). Ich bin mir jedoch nicht sicher, wie dies mit dem oben genannten Programm zusammenhängt. Irgendwelche Ideen?
#include stdlib.h(für malloc)
#include <stdlib.h>ist es perfekt zu finden, aber das kommt nicht in Frage.
sizeof(int) == sizeof(int*), auf der beispielsweise Zeiger über ein anderes Register als ints in der verwendeten Aufrufkonvention zurückgegeben werden, legitimerweise fehlschlagen .
malloc(). GCC sagt: warning: incompatible implicit declaration of built-in function 'malloc'auch.
stdlib.hnicht dabei zu sein?