25 EYLÜL 2011, Pazar
Neden bu kod 32-bit 64-bit mimarisi ama işe iyi segfault?
Aşağıdaki C bulmaca geldi:
S: Neden aşağıdaki program IA-32, IA-64, ama işe iyi segfault mu?
int main()
{
int* p;
p = (int*)malloc(sizeof(int));
*p = 10;
return 0;
}
Biliyorum bu boyutta int
bir 64-bit makine olmayabilir aynı boyutta bir işaretçi (int
olabilir 32 bit ve işaretçi olabilir 64 bit). Ama bu yukarıdaki programı ile ilgilidir nasıl emin değilim.
Herhangi bir fikir?
CEVAP
25 EYLÜL 2011, Pazar
int*
Maskeler için uygun olmayan #include
dönüş malloc
tipi int
olduğu varsayılır aslında dökme. IA-64 bu sorun belirgin yapar sizeof(int) < sizeof(int*)
sahip olur.
comp.lang.c FAQ giriş why casting the return from malloc
is never needed and potentially bad tartışma vardır.
Bunu Paylaş:
Neden sıralanmamış bir dizi daha hızlı...
Neden bu iki kez (1927) garip bir sonu...
Neden HTML düşün” renk? “chucknorris m...
Neden Google while(1); JSON yanıtların...
Neden char[] şifreler için Dize Java t...