Tôi đã xem qua câu đố C sau:
H: Tại sao chương trình sau đây mặc định trên IA-64, nhưng lại hoạt động tốt trên IA-32?
int main()
{
int* p;
p = (int*)malloc(sizeof(int));
*p = 10;
return 0;
}
Tôi biết rằng kích thước của int
máy 64 bit có thể không bằng kích thước của con trỏ ( int
có thể là 32 bit và con trỏ có thể là 64 bit). Nhưng tôi không chắc điều này liên quan như thế nào đến chương trình trên. Có ý kiến gì không?
#include stdlib.h
(ví malloc)
#include <stdlib.h>
, nó hoàn toàn được tìm thấy, nhưng đó không phải là câu hỏi.
sizeof(int) == sizeof(int*)
, ví dụ, nếu các con trỏ được trả về thông qua một đăng ký khác với int
s trong quy ước gọi được sử dụng.
malloc()
. GCC nói: warning: incompatible implicit declaration of built-in function 'malloc'
quá.
stdlib.h
không được bao gồm?