تبلیغات
Qt Developer Blog - مدیریت حافظه در سلسله مراتب اشیا

کیوتی ساده و آسان برای همه

مدیریت حافظه در سلسله مراتب اشیا

نویسنده :سعید دادخواه
تاریخ:یکشنبه 26 دی 1389-05:53 ب.ظ

سلام دوستان
همون طور که میدونید سی پلاس پلاس مدیریت حافظه رو به عهده برنامه نوس گذاشته است یعنی اینکه وقتی شما به عملگر new یه شی ی رو ایجاد میکنید این شی از بین نمیره تا یا برنامه به انتها برسه یا از عملگر delete برای حذف اون استفادن کنیم
اما در کیوتی این امکان وجود داره که شما در شرایط های خاصی مدیریت حافظه رو به عهده کیوتی بذارین . بذارید بیشتر توضیح بدم . اشیای کلاس هایی که از QObject ارث میبرند میتونند یه چیزی شبیه به یه ساختار درخت مانند تشکلیل بدند .  همون طور که دیدیم اشیا ممکن است فرزند داشته باشند . اگرپدر ( همون شی ای که فرزند داره ) delete بشه تمام فرزندان اون هم در کیوتی به صورت خودکار حذف میشند. این بچه ها تازه میاند و بچه ها شونو حذف میکنند و همین طور تا آخر
پس اگر ریشه اون درخت فرضی از  بین بره کیوتی به صورت خودکار بقیه درخت رو حذف میکنه. این ویژگی بسیار خوب هست چون شما رو از دردسر اینکه اشیا رو چگونه مدیریت کنید و کی از بین ببرینشون راحت میکنه.
اما برای اینکه این مدیریت حافظه توسط کیوتی اعمال بشه باید تمام بچه ها و بچه های بچه ها و بچه های .... روی heap گرفته شده باشند .یعنی با عملگر new ساخته شده باشند در غیر این صورت زمانی که مدت عمر یه شی یا یه متغیر تمام شد خود به خود طبق ویژگی های سی پلاس پلاس از بین خواهد رفت.این مشکل کیوتی کار های تاز کار هست . اشیا رو روی استک میگیرند و خوب بعد از اینکه مثلا سازنده کلاس به انتها رسید کامپایلر اشیای ایجاد شده روی سstack رو از بین میبره  و به همین دلیل هست که مثلا فرم یه لحظه کوتاه نمایش داده میشه و ازبین میره.
فعلا


نوع مطلب : عمومی 

داغ کن - کلوب دات کام
نظرات() 
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر