TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 550 subscribers
Post #625 223
Local Variables و Stack Allocation

متغیرهای محلی (Local variables)، شامل value typeها و reference به objectها، روی stack ذخیره می‌شوند.
با این حال، referenceهای مربوط به objectها به heap اشاره می‌کنند؛ جایی که داده‌ی واقعی object در آن قرار دارد.

زمانی که یک value type بخشی از یک reference type باشد (برای مثال، یک فیلد داخل یک class)، آن value type به‌عنوان بخشی از object مربوط به reference type روی heap ذخیره می‌شود.

نحوه‌ی عملکرد Heap در #C: مثال
کد زیر را در نظر بگیرید:
public class Person
{
public string Name;
public int Age;
}

public void HeapExample()
{
Person person = new Person();
person.Name = "Alice";
person.Age = 30;
}

در این مثال: object از نوع Person روی heap ایجاد می‌شود زیرا یک reference type است.reference با نام person روی stack ذخیره می‌شود که به object روی heap اشاره می‌کند.
فیلدهای Name و Age نیز به‌عنوان بخشی از object مربوط به Person روی heap ذخیره می‌شوند

Value Typeها در مقابل Reference Typeها

درک value typeها و reference typeها به شفاف‌سازی نحوه‌ی استفاده از حافظه کمک می‌کند.

🔹️Value Types:
به‌صورت مستقیم در حافظه‌ی stack ذخیره می‌شوند. مانند int، float، bool و structهای سفارشی

🔹️Reference Types:
روی heap ذخیره می‌شوند، اما reference مربوط به آن‌ها روی stack قرار می‌گیرد. مانند classها، arrayها و stringها

مثال: Value Type در مقابل Reference Type
// Value type, allocated on the stack
int x = 10;

// Reference type, reference on stack, object on heap
Person p1 = new Person();

در مثال بالا، x روی stack ذخیره می‌شود زیرا یک value type است، در حالی که p1 روی heap ذخیره می‌شود زیرا یک reference type است.

Memory Management در .NET

ءruntime مربوط به NET. شامل یک Garbage Collector (GC) است که به مدیریت تخصیص و آزادسازی حافظه برای heap کمک می‌کند.

ءGC به‌صورت خودکار objectهایی که همچنان در حال استفاده هستند را ردیابی کرده و حافظه‌ای که دیگر مورد نیاز نیست را آزاد می‌کند. ♻️
More from @csharpgeeks
  1. Sep 22, 2026یه مدتی قراره از دنیای NET. فاصله بگیرم، چون وقتشه برم سربازی. راستش نمیدونم این مدت رو چج…
  2. Sep 20, 2026🔥 حالا مشکل اصلی: Alert Storm فرض کن Database از دسترس خارج شده. ۱۰۰ Pod داری. هر Pod می‌…
  3. Sep 20, 2026🚨 طراحی سیستم Monitoring و Alerting در یک سیستم بزرگ فرض کن ساعت ۳ صبح است. سیستم شما با…
  4. Sep 19, 2026#Engineering_Leadership تصمیم نگرفتن هم یک تصمیم است یه چیز عجیب توی تیم‌های مهندسی: گاهی…
  5. Sep 19, 2026☑ چک‌لیست آماده‌سازی تیم، فرایندها و زیرساخت برای توسعه با AI توجه: هیچ چک‌لیستی جهان‌شمول…
  6. Sep 19, 2026📌پایان یک انتظار طولانی: اعتبارسنجی ناهمگام (Async Validation) در NET 11.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →