Почему этот код имеет ошибку segfault в 64-битной архитектуре, но отлично работает в 32-битной?

Я наткнулся на следующую загадку C:

Q: Почему следующая программа имеет segfault на IA-64, но нормально работает на IA-32?

  int main()
  {
      int* p;
      p = (int*)malloc(sizeof(int));
      *p = 10;
      return 0;
  }

Я знаю, что размер int на 64-битной машине может не совпадать с размером указателя ( int может быть 32-битным, а указатель может быть 64-битным). Но я не уверен, как это связано с указанной выше программой. Есть идеи?

108
задан user7 12 May 2012 в 22:12
поделиться