Aşağıdaki C bulmacasıyla karşılaştım:
S: Aşağıdaki program neden IA-64'e ayrılıyor, ancak IA-32'de iyi çalışıyor?
int main()
{
int* p;
p = (int*)malloc(sizeof(int));
*p = 10;
return 0;
}
int
64 bitlik bir makinedeki boyutunun bir göstericinin boyutuyla aynı olmayabileceğini biliyorum ( int
32 bit ve işaretçi 64 bit olabilir). Ancak bunun yukarıdaki programla nasıl bir ilgisi olduğundan emin değilim. Herhangi bir fikir?
#include stdlib.h
(malloc için) uyarısı olmadan derler
#include <stdlib.h>
, mükemmel bir şekilde bulun, ama söz konusu değil.
sizeof(int) == sizeof(int*)
örneğin işaretçilerin int
kullanılan arama kuralındaki s'ye farklı bir kayıt olmasına rağmen geri döndüğü bir platformda yasal olarak başarısız olabilir .
malloc()
. GCC diyor ki: warning: incompatible implicit declaration of built-in function 'malloc'
çok.
stdlib.h
Dahil edilmemek gibi aptalca bir şey mi?