PDA

View Full Version : سوال: اندازه شئ Object



rasol_afkham
جمعه 13 تیر 1393, 01:26 صبح
با سلام خدمت دوستان عزیز:
چطور می توان حافظه ای که یک شیع Objet اشغال می کند را بدست آورد.
با تابع sizeof امتحان کردم جواب نداد با تابع System.Runtime.InteropServices.Marshal.SizeOf هم امتحان کردم ولی خطا می ده.

plus
جمعه 13 تیر 1393, 07:38 صبح
کلمه کلیدی sizeof برای بدست آوردن اندازه value type ها مثل int، char و... هست.
مثل:

int length = sizeof(int);

Marshal.SizeOf هم برای بدست آورد اندازه unmanaged type هست مثل:

int length = Marshal.Sizeof(typeof(Point));


راه حل مستقیمی برای بدست آوردن اندازه اشغال شده توسط یک شی Object وجود نداره.بخصوص اینکه اون شی Object میتونه شامل اشیائ دیگه باشه (به صورت سلسله مراتبی).
ظاهرا یک روش تخمینی، استفاده از BinaryFormatter و Serialize کردن اون شئ هست:

long size = 0;
object o = new object();
using (Stream s = new MemoryStream()) {
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(s, o);
size = s.Length;
}