【发布时间】:2014-05-02 17:09:27
【问题描述】:
我正在用 C 语言为 malloc 和 free 编写自己的函数以进行分配。我需要利用 C sbrk() 包装函数。据我了解sbrk() 将程序的数据空间增加作为参数传递的字节数并指向程序中断的位置。
如果我有以下代码sn-p:
#define BLOCK_SIZE 20
int x;
x = (int)sbrk(BLOCK_SIZE + 4);
我收到编译器错误warning: cast from pointer to integer of different size。为什么会这样,无论如何我可以将sbrk() 指向的地址转换为int?
【问题讨论】:
-
有什么理由不使用
void *x;吗?如果你真的想要一个整数类型,那么intptr_t x = (intptr_t)sbrk...;来自<stdint.h> -
因为 int 是 32 位,所以指针是 64 位。尝试使用 long int。尝试检查 sizeof(int) 和 sizeof(void*)
标签: c pointers malloc heap-memory sbrk