مشاهده نسخه کامل
: مشکل در استفاده از توابع api
Arash_XL7710i_207
13-02-2009, 20:23
با سلام خدمت دوستان عزیز برنامه نویس خودم:
یه چند وقتی هست که موقعی که از تابعی (api) میخوام استفاده کنم ارور Access Violation قبل شروع کار تابع ظاهر میشه؟
به نظر دوستان مشکل از کجاست؟
شما باید کدت رو بزاری یا بگی از چه api و چطور استفاده کردی تا بشه راهنمایی کرد
این اررور موقعی ظاهر میشه که شما به یه آدرس غیر مجاز بخوای دسترسی پیدا کنید
Arash_XL7710i_207
14-02-2009, 16:39
مثلا موقعی که میخوام از تابع GlobalMemoryStatus() یا GetComputerName استفاده کنم.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این بخاطر اینه که mem الان یه اشارگر هست که به جایی اشاره نمیکنه برای حلش یک راه اینه که باید حافضه پویا تخصیص کنید
این کارو با توابعی مثل malloc در C یا new در ++C و ... میشه کرد مثلا با malloc به این شکل میشه
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته اگه ساختار رو MEMORYSTATUS در نظر بگیرید میتونید کد رو به این صورت تغییر بدین که دیگه احتیاج به تخصیص حافظه پویا نیست
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در حالت دوم دسرسی به اعضاء با نقطه هست
Arash_XL7710i_207
15-02-2009, 07:42
خوب یعنی به نظر شما باید برای توابع api حافظه پویا بزارم؟؟؟؟؟
نه برای توابع api برای بعضی از پارامترا از نوع رشته یا ساختار و ... که به api داده میشه اگه پارامتر یه اشارگر باشه
بهتره با یه آدرس معتبر مقدار دهی بشه که این آدرس میتونه گرفتن حافظه پویا باشه یا متناسب به پارامتر یه رشته یا ساختار یا ... معتبر باشه
اگه این کار انجام نشه در قالب موارد با اون ارروری که گفتین روبرو میشین یا در حالت بدتر اگه کامپایلر یه مقدار اولیه نا مشخص
به اشارگر بده که درا ین حالت ممکنه روی هر سیستم رفتار متفاوتی داشته باشه
همونطور که در مثال دوم گفتم لزومی نداره حتما ساختار رو اشارگر در نظر بگیرین که مجبور به تخصیص حافظه باشن
در مورد همین api خود msdn مثالی داره بد نیست ببینید
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.