我的分配代码是
dat* data = NULL;
data = sbrk(SIZE);
if((int) data != -1){
return data
}else{
printf("Not enough space");
}
sbrk(...) 函数返回一个有效地址 (0x603021) 但是当我进入 gdb 并打印 sbrk(0) 时,我得到了十六进制值 0xffffffff8060341。经过数学计算,我发现指针 0x8060341 应该是 sbrk(0)。前面的字母f(即0xfffff...)从何而来?