#brk & #sbrk #Memory_Management #System_Calls #Unix
شاید تا به حال در خصوص توابع زبان سی و سی پلاس پلاس که در خصوص رزرو حافظه #Heap استفاده میشوند رو شنیده باشید, اما توابع سیستمی که Data Segment هارو مدیریت میکنند چطور؟

حافظه پویا همواره نیازمند اینه که تغییر سایز بده و اشاره گر های اون آزاد و رزور بشه, به همین منظور میبایست در یک Segment که مختص حافظه #Heap هستش آدرس دهی ها بست و گُسست پیدا کنند, از همین روی تابع ()brk و ()sbrk مامور تعیین آدرس ابتدا و انتهای حافظه Heap رو دارا هستند,

در تصویر پست یک کد سی بیس میبینید که با استفاده از یک حلقه for اقدام به رزرو حافظه #Heap پرداخته و دوباره با یک حلقه for دیگری حافظه رزوی رو آزاد کرده و دوباره اقدام به رزرو حافظه میکنه,

تنیجه در تصویر بعدی بسیار جالبه آدرس های اولین رزرو با دومین رزرو یکی بوده و بازه آدرس Data Segment هم مشخص هستش, ناگفته نمونه که تابع ()brk بصورت پیشفرض با طول آدرس 1000 تایی هر Segment رو میسازه...

https://en.wikipedia.org/wiki/Sbrk
https://man7.org/linux/man-pages/man2/brk.2.html
@Unk9vvN