Saya menemukan teka-teki C berikut:
T: Mengapa program berikut dipisahkan pada IA-64, tetapi berfungsi dengan baik pada IA-32?
int main()
{
int* p;
p = (int*)malloc(sizeof(int));
*p = 10;
return 0;
}
Saya tahu bahwa ukuran int
pada mesin 64 bit mungkin tidak sama dengan ukuran pointer ( int
bisa 32 bit dan pointer bisa 64 bit). Tetapi saya tidak yakin bagaimana ini berhubungan dengan program di atas. Ada ide?
#include stdlib.h
(untuk malloc)
#include <stdlib.h>
, itu ditemukan dengan sempurna, tetapi itu bukan pertanyaannya.
sizeof(int) == sizeof(int*)
, jika misalnya pointer dikembalikan melalui register yang berbeda int
dalam konvensi pemanggilan yang digunakan.
malloc()
. GCC mengatakan: warning: incompatible implicit declaration of built-in function 'malloc'
juga.
stdlib.h
tidak disertakan?