PDA

View Full Version : سوال: مانیتور کردن حافظه تخصیص داده شده به یک اشاره گر



bizmit
دوشنبه 28 بهمن 1387, 09:27 صبح
سلام
آیا ابزاری در ویژوال C++ موجود است که فضای حافظه رو برای ما مانیتور کنه؟

آخه من قبلا از یه نفر شنیده بودم که در خود C++ امکانی وجود داره(به نام watching یا یه همچین چیزی!) که وقتی اشاره گری تعریف می کنیم و به آن حافظه پویا اختصاص می دهیم،محل آن حافظه را به ما نشان می ده و به نوعی اون رو مانیتور می کنه.
چون من تو برنامه ام یک struct تعریف کردم که حاوی چند تا فیلد هستش و بعد آدرس اون رو در یک اشاره گر ویندوزی(هندل) ریختم و نیاز دارم که محتویات اون هندل رو بعد از اجرا در حافظه ببینم!

می خواستم ببینم واقعا هم چین چیزی وجود داره؟
و اینکه آیامی توانید یه مثال ساده بگذارید که من بعد از اجراش ، جای آن متغیرها رادر حافظه ببینم؟
(چون هنوز برنامه ی خودم رو کامپایل نکردم و هنوز نمی تونم نتیجه اش رو تو برنامه خودم ببینم!)
با تشکر

Mehdi Asgari
دوشنبه 28 بهمن 1387, 12:45 عصر
موقع دیباگ ، در دیباگر محیط توسعه ات (ویژوال استودیو ، سی بیلدر ، ...) می تونی با استفاده از Watch ، مقدار و آدرس هر متغیری رو ببینی و هنگام دیباگ (و اجرای خط به خط کد) تغییرات رو دنبال کنی
البته این صرفا به watch محدود نیست. می تونی محتویات حافظه ، پشته و فراخوانی توابع و ... رو هم ببینی

Nima_NF
دوشنبه 28 بهمن 1387, 14:15 عصر
در لینک زیر نحوه کار با دیباگر در ++visual C توضیح داده شده است، در سایر کامپایلرها هم به همین شکل هست:
http://www.barnamenevis.org/forum/showthread.php?t=127644

پس از آن در خطی توسط breakpoint ایستادید می توانید بر روی متغیر ها، ساختارها و ... راست کلیک کنید و add to watch را انتخاب کنید در در پنجره ای جداگانه تغییرات آن نمایش داده شود.(سایر پنجره ها در هنگام دیباگ ظاهر می شوند مانند locals ، autos و غیره ظاهر می شوند اگر نشدند از منوی view آن ها را باز کنید) برای ادامه کدها هم باید خط به خط یا تابع به تابع و ... با f10, F11 , F12 اجرای برنامه را ادامه دهید. هر جایی که نیازمند ورودی باشد برنامه ظاهر می شود و می توانید در آن کار خود را ادامه دهید.