Cでメモリがどのように機能するかを理解しようとしているので、sbrk
現在関数を試しています。sbrk(0)
現在のプログラム ブレーク、つまりデータ セグメントの末尾を返す必要があることはわかっています。
そのため、複数回呼び出しを試みましたがsbrk(0)
、何らかの理由で最初の値が他の値とは異なります。たとえば、このプログラム
#include <stdio.h>
#include <unistd.h>
int main()
{
void * currpb = sbrk(0);
printf("The current program break is: %p.\n", currpb);
void * newpb = sbrk(0);
printf("The current program break is: %p.\n", newpb);
void *new2pb = sbrk(0);
printf("The current program break is: %p.\n", new2pb);
void *new3pb = sbrk(0);
printf("The current program break is: %p.\n", new3pb);
}
次の出力を教えてください。
The current program break is: 0x18b0000.
The current program break is: 0x18d1000.
The current program break is: 0x18d1000.
The current program break is: 0x18d1000.
最初の値が他の 3 つの値と異なる理由がわかりません。何かアイデアはありますか?