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 من بسته شود.
آیا مورد خاصی وجود دارد که من باید رعایت کنم؟
حالا exe ایجاد شده بدون مشکل اجرا می شود و Thread کار خود را به خوبی انجام می دهد (حلقه بی نهایت داخل Thread بدون اشکال وظایف خود را انجام می دهد).
زمانی که به عدد memory usage در پنجره task manager نگاه می کنم، این عدد افزایش می یابد و پس از مدتی مقدار کمتری را می گیرد و دومرتبه شروع به بالا رفتن میکند.
ضمن اینکه اجرای طولانی exe سیستم را دچار مشکل کرده و مدتی پس از نمایش پیغام Virtual memory ، اجرای هر گونه برنامه ای در سیستم با مشکل مواجه می شود تا زمانی که exe من بسته شود.
آیا مورد خاصی وجود دارد که من باید رعایت کنم؟