割り当てのための私のコードは
dat* data = NULL;
data = sbrk(SIZE);
if((int) data != -1){
return data
}else{
printf("Not enough space");
}
sbrk(...) 関数は有効なアドレス (0x603021) を返しますが、gdb に入って sbrk(0) を出力すると、16 進値 0xffffffff8060341 が取得されます。計算を行った後、ポインター 0x8060341 は sbrk(0) であることがわかりました。先頭の文字 f (つまり 0xfffff...) はどこから来たのですか?