Syntax | سینتکس
2.98K subscribers
423 photos
111 videos
35 files
392 links
Download Telegram
چند نکته درباره stack و heap

به صورت کلی می توان گفت value type ها مانند integer و boolean در stack ذخیره می شوند و reference type ها و دیتایی که ساختار پیچیده تری دارد در heap ذخیره می شوند(برای مثال در اکثر زبان های برنامه نویسی string در heap ذخیره می شود).

یکی از تفاوت های بزرگ بین stack و heap در این است که استک توسط CPU مدریت می شود. برای مثال اگر شما در یک فانکشن چند تا value type تعریف کنید، پس از اینکه از فانکشن خارج شدید بصورت خودکار از اخر به اول مقادیری که تعریف کردید حذف می شوند.

اما در reference type ها اتفاقی که می افتاد این است ما به عنوان مقدار آدرس حافظه آن را که در heap قرار دارد ذخیره می کنیم و وقتی که از داخل stack پاک می شود فقط آدرسی که داده بودیم پاک شده است و هنوز هم داخل heap وجود دارد.

مدریت heap توسط خود برنامه نویس و یا قابلیت garbage collector که در اکثر زبان های برنامه نویسی وجود دارد انجام می شود. اگر garbage collector موفق به آزاد کردن حافظه نشود باید خود برنامه نویس بصورت دستی این کار را انجام دهد در غیر این صورت memory leak اتفاق می افتد.

یکی از تفاوت های ترد و پراسس در این است که هر ترد برای خودش stack جدا دارد اما برخلاف پراسس heap جداگانه ای ندارد و از یک heap مشترک استفاده می کنند.

(چند تا نکته، شما توی کامنت اضافه کنید)

#stack #heap

@Syntax_fa
👍8🔥1