Я натрапив на таку загадку C:
Питання: Чому на IA-64 наведена нижче програма, але вона працює чудово на IA-32?
int main()
{
int* p;
p = (int*)malloc(sizeof(int));
*p = 10;
return 0;
}
Я знаю, що розмір int
64-бітної машини може бути не такий, як розмір вказівника ( 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
не включене?