Я натрапив на таку загадку C:
Питання: Чому на IA-64 наведена нижче програма, але вона працює чудово на IA-32?
int main()
{
int* p;
p = (int*)malloc(sizeof(int));
*p = 10;
return 0;
}
Я знаю, що розмір int64-бітної машини може бути не такий, як розмір вказівника ( intможе бути 32 біта, а вказівник може бути 64 біт). Але я не впевнений, як це стосується вищезгаданої програми. Якісь ідеї?
#include stdlib.h(для malloc)
#include <stdlib.h>, це ідеально знайти, але це не в питанні.
sizeof(int) == sizeof(int*), наприклад, покажчики повернулися, хоча інший реєстр, який використовується intв конвенції виклику, що використовується.
malloc(). GCC каже: warning: incompatible implicit declaration of built-in function 'malloc'теж.
stdlib.hне включене?