PDA

View Full Version : اجرای طولانی exe سیستم را دچار مشکل می کند



zoncpp
یک شنبه 05 فروردین 1386, 15:12 عصر
برنامه ای نوشته ام که در آن یک Thread ایجاد می شود. این thread در یک حلقه بی نهایت یک سری توابع api را فراخوانی می کند که بعضی از این توابع نیاز به pointer هایی به حافظ Alloc شده دارند. من قبل از شروع حلقه for بی نهایت حافظه های موردنیاز را با حداکثر طول مجاز Alloc می کنم (با فراخوانی تابع GlobalAlloc ) و pointer به این حافظه ها در موقع فراخوانی توابع api (داخل حلقه بی نهایت) به این توابع ارسال می شوند و چون در حلقه بی نهایت دائم به این Pointerها و حافظه های Alloc شده نیاز است، هیچ گاه این حافظه ها free نمی شوند.

حالا exe ایجاد شده بدون مشکل اجرا می شود و Thread کار خود را به خوبی انجام می دهد (حلقه بی نهایت داخل Thread بدون اشکال وظایف خود را انجام می دهد).

زمانی که به عدد memory usage در پنجره task manager نگاه می کنم، این عدد افزایش می یابد و پس از مدتی مقدار کمتری را می گیرد و دومرتبه شروع به بالا رفتن میکند.
ضمن اینکه اجرای طولانی exe سیستم را دچار مشکل کرده و مدتی پس از نمایش پیغام Virtual memory ، اجرای هر گونه برنامه ای در سیستم با مشکل مواجه می شود تا زمانی که exe من بسته شود.

آیا مورد خاصی وجود دارد که من باید رعایت کنم؟

zoncpp
سه شنبه 07 فروردین 1386, 08:17 صبح
اگر کوچکترین موردی به نظرتون می رسه لطف کنید بنویسید، ممکنه کمکم کنه

Inprise
سه شنبه 07 فروردین 1386, 09:08 صبح
اطلاعاتی که دادی برای قضاوت کافی نیست ، اما بهر حال معمولا پیدا کردن Memory Leak ها کار سختی نیست اگر از ابزارهای مناسب استفاده کنی .


http://www.etnus.com/MemoryScape/index.html

http://www.etnus.com/images/MemoryScape/HeapStatusGraphicalView3.png


http://www.codeproject.com/tools/visualleakdetector.asp

http://www.codeproject.com/tools/visualleakdetector/screenshot.png