SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EmmightySofia

    EmmightySofi

    25 EYLÜL 2011
  • TheSalband Rai

    TheSalband R

    11 NİSAN 2011
  • TROPFEST

    TROPFEST

    27 Mart 2007