در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

استفاده از کلمه کلیدی stackalloc و آشنایی با کلمه کلیدی sizeof

یکی از قابلیت های زبان سی شارپ، تخصیص حافظه stack به صورت مستقیم برای متغیرهای محلی یا local variable ها است. برای اینکار می بایست از کلمه کلیدی stackalloc استفاده کرد. البته لازمه استفاده از این قابلیت استفاده از Pointer ها است. این قابلیت باعث می شود که متغیر ایجاد شده توسط GC مدیریت نشود. برای مثال، در کد زیر آرایه ای از نوع int ایجاد شده که به جای حافظه heap در حافظه stack ذخیره می شود:

unsafe
{
    int* numbers = stackalloc int[5];
}

در ادامه می توان با استفاده از قابلیت Pointer ها، به سادگی خانه های آرایه را مقدار دهی کرد و مقادیر آن را در خروجی چاپ کرد:

unsafe
{
    int* numbers = stackalloc int[5];

    *numbers = 12;
    numbers++;
    *numbers = 3;

    Console.WriteLine(*(numbers));
    Console.WriteLine(*(numbers - 1));
}

با اجرای کد بالا، مقادیر 12 و 3 به ترتیب در خروجی نمایش داده خواهند شد.


کلمه کلیدی sizeof


همانطور که می دانید، تمامی نوع های داده اولیه در زبان سی شارپ یک اندازه مشخص دارند، مانند int که 4 بایت است یا long که 8 بایت است. در سی شارپ، بوسیله کلمه کلیدی sizeof می توان اندازه ای که یک نوع داده حافظه اشغال می کند را بدست آورد. در کد زیر نحوه استفاده از این دستور توضیح داده شده است:

Console.WriteLine("Size of Int16 is: {0}", sizeof (short));
Console.WriteLine("Size of Int32 is: {0}", sizeof(int));
Console.WriteLine("Size of Int64 is: {0}", sizeof(long));
Console.WriteLine("Size of Decimal is: {0}", sizeof(decimal));

با اجرای کد بالا، به ترتیب مقادیر 2 و 4 و 8 و 16 که سایز نوع های داده short و int و long و decimal است در خروجی چاپ می شود. همچنین بوسیله این کلمه کلیدی می توان سایز یک struct را نیز بدست آورد. struct زیر را در نظر بگیرید:

unsafe
{
    Console.WriteLine(sizeof (Values));
}

دقت کنید که برای struct ها، تنها می توان در بلاک های unsafe از sizeof استفاده کرد.

نویسنده: حسین احمدی

منبع: ITPRO

#کلمه_کلیدی_sizeof_در_سی_شارپ #pointer_ها_در_سی_شارپ #اشاره_گرها_در_سی_شارپ #کلمه_کلیدی_stackalloc_در_سی_شارپ
0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....