امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
تخصیص حافظه و پاک کردن آن در سی
نویسنده پیام
black-scorpion آفلاین
تازه وارد

ارسال‌ها: 16
موضوع‌ها: 5
تاریخ عضویت: خرداد ۱۳۸۶

تشکرها : 0
( 2 تشکر در 1 ارسال )
ارسال: #1
تخصیص حافظه و پاک کردن آن در سی
#include <iostream.h>
#include <conio.h>

inline float cube(const float s) { return s * s * s; }

int main()
{

cout << "enter the side length of ur cube: ";
float side;
cin >> side;



cout << "volume of cube with side "
<< side << " is " << cube( side ) << endl;

cout << "the adress of cube is:" << &cube << endl;

getch();



return 0;

}




0x0401019
این عدد آدرس حافظه ای است که به تابع cube داده میشود
چطور میشه این تابع رو از این محل به محلی دیگر انتقال داد
یا محتوای این آدرسس رو پاک کرد.

راستی ویژوال سی چطوری به این تابع آدرس می دهد یا اصلا
آدرس حافظه چیه؟
چطور میشه فهمید مثلا در فلان آدرس چه برنامه ای است یا
چه تایع یا متغیری ذخیره شده است.[/align]
۲۴-آبان-۱۳۸۶, ۱۴:۰۱:۳۲
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #2
RE: تخصیص حافظه و پاک کردن آن در سی
البته این تابع به شکل inline تعریف شده و از نظر ساختار مثل ماکرو ها عمل میکنه . من خودم واقعا نمیدونم که الان این آدرس داده شده آدرس کجاست اما شک دارم آدرس تابع باشه . در واقع تابع inline کلا تابع نیست و مفهوم تابع معمولی رو نداره . فکر کنم بستگی به کامپایلر داشته باشه و نحوه عملکردش در اینجور موقعیت ها . متاسفانه من از ساختار درونی کامپایلر ++C اطلاعات ندارم .

کلا آدرس دهی اولیه توسط کامپایلر انجام میشه . بعد Loader سیستم عامل وظیفه داره که هنگام لود شدن برنامه آدرس ها رو نسبت به حافظه و وضعیت اون تنظیم کنه .
وقتی داریم در مورد برنامه اجرایی صحبت میکنم داریم در مورد کد ماشین صحبت می کنیم و متعیر و اسم و اینها مفهومی نداره و همش آدرس و عدده .
اکثر این تبدیلات هم بر عهده کامپایلره . البته راههای مختلفی وجود دارند که میشه ازشون استفاده کرد و متوجه شد در فلان آدرس چه چیزی هست . مثلا تبدیل کد ماشین به سورس اسمبلی و بررسی کد در زمان اجرا به کمک Debugger ها . ( شبیه همون کاری که کراکر ها می کنن )

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۲۴-آبان-۱۳۸۶, ۱۹:۳۶:۴۶
ارسال‌ها
پاسخ
black-scorpion آفلاین
تازه وارد

ارسال‌ها: 16
موضوع‌ها: 5
تاریخ عضویت: خرداد ۱۳۸۶

تشکرها : 0
( 2 تشکر در 1 ارسال )
ارسال: #3
RE: تخصیص حافظه و پاک کردن آن در سی
حالا تابع کیوب اگه این لاین هم نباشه یک آدرس دیگه میده
من میخام بدونم که با چه دستوراتی میشه محتوای حافظه رو
ویرایش کرد یا پاک کرد، از این جور چیزها دیگه.
۲۵-آبان-۱۳۸۶, ۲۲:۱۰:۳۴
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #4
RE: تخصیص حافظه و پاک کردن آن در سی
توی کتابخونه C با یکسری تابع میشه یک ارهایی کرد مثل memcpy . برای اطلاعات بیشتر میتونی به http://www.cplusplus.com/reference/clibrary/cstring/ مراجعه کنی . کار با حافظه در برنامه های تحت ویندوز هم به کمک توابع API انجام میشه .

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۲۷-آبان-۱۳۸۶, ۰۸:۳۳:۰۹
ارسال‌ها
پاسخ
black-scorpion آفلاین
تازه وارد

ارسال‌ها: 16
موضوع‌ها: 5
تاریخ عضویت: خرداد ۱۳۸۶

تشکرها : 0
( 2 تشکر در 1 ارسال )
ارسال: #5
RE: تخصیص حافظه و پاک کردن آن در سی
محمد جان دستت درد نکنه واقعا سایت خوبی معرفی کردی
من حتی به یکسری چیزای دیگه ای که می خواستم رسیدم.
۲۷-آبان-۱۳۸۶, ۱۴:۲۳:۳۷
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [سوال] تخصیص حافظه به رشته و ارسال به تابع؟ one hacker 2 3,268 ۰۶-اردیبهشت-۱۳۹۰, ۱۷:۲۸:۲۲
آخرین ارسال: one hacker
  دسترسی به محتویات یک بایت از حافظه Administrator 5 4,949 ۰۱-دى-۱۳۸۷, ۱۲:۴۳:۴۶
آخرین ارسال: hoax3r
  دسترسي مستقيم به حافظه صفحه مونيتور sh_teta 7 5,582 ۱۳-تير-۱۳۸۷, ۱۹:۵۳:۴۹
آخرین ارسال: Mamad2003
  دستکاری حافظه ajlajlajl 4 3,087 ۰۱-شهریور-۱۳۸۶, ۱۴:۰۰:۰۴
آخرین ارسال: ajlajlajl
  کنترل حافظه RAM ajlajlajl 0 1,636 ۱۷-فروردین-۱۳۸۶, ۱۶:۲۱:۳۱
آخرین ارسال: ajlajlajl
  گرفتن حافظه دايناميك از نوع استاتيك؟! kamran11958 1 1,905 ۱۲-بهمن-۱۳۸۵, ۱۸:۱۸:۵۶
آخرین ارسال: arian_vc

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS