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 int
eines 64-Bit-Computers möglicherweise nicht der Größe eines Zeigers entspricht ( int
32 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 int
s in der verwendeten Aufrufkonvention zurückgegeben werden, legitimerweise fehlschlagen .
malloc()
. GCC sagt: warning: incompatible implicit declaration of built-in function 'malloc'
auch.
stdlib.h
nicht dabei zu sein?