PDA

View Full Version : malloc ماکرو



meysamg_alone
جمعه 18 اردیبهشت 1388, 18:27 عصر
char *RecvBuffer = (char *)malloc(MAX_PACKET_SIZE + 1);

سلام به همه
اقا تویه این کد malloc چه کاری انجام میشه در کل یه تضیع بدین من فقط می دونم که یه اشتاره گر تعریف شده از نوع ارایه رشته ای و یه مقدار هم بهش داده میشه و لی این که این چه کار می کنه متوجه نمیشم !

tdkhakpur
جمعه 18 اردیبهشت 1388, 19:09 عصر
سلام:
دوست گرامی malloc همانطور که از اسمش پیداست برای گرفتنم مکان از حافظه در حالت اجرای برنامه هست.
و همانند new یه بلوک از حافظه رو برامون رزرو کرده و ادرس اون بلوک حافظه رو برمیگردونه.

meysamg_alone
جمعه 18 اردیبهشت 1388, 23:39 عصر
امکان داره با استفاده از همین کلمه new یه مثال بزنید که دقیقا همون کار بالا رو انجام بده ؟
و فرقشون چیه چرا یه جا از این استفاده میشه و یه جا از اون !

tdkhakpur
جمعه 18 اردیبهشت 1388, 23:45 عصر
دوست عزیز کارشون باهم هیچ فرقی نداره فقط new تجدید ورژن c++ هست که برای سهولت کار توسط شرکت بورلند طراحی شده نه میکروسافت.

char *RecvBuffer = (char *) new [MAX_PACKET_SIZE + 1];
در آخر کار توسط دستور زیر میتونی این حافظه رو به سیستم برگردونید.


delete [] RecvBuffer;

zoofa
شنبه 19 اردیبهشت 1388, 00:32 صبح
سلام دوست عزیز
تابع malloc یک فضا به اندازه ای که در پرانتز جلوی آن قرار دارد به بایت از رم را می گیرد برای استفاده در برنامه و خروجی آن اگر با موفقیت فضا را بگیرد آدرس اولین بایت فضای گرفته شده را بر می گرداند است و اگر فضای خالی وجود نداشته باشد و نتواند فضایی بگیرد مقدار 0 ر ا بر می گرداند
همان طور تابع free یک فضای گرفته شده را آزاد می کند.

توابع فوق مربوط به c می باشد و در c++ می توان از new هم برای گرفتن فضا استفاده کرد