PDA

View Full Version : سوال: فرق بین new و gcnew در ویزوال سی چیست؟



بیتا خرمی
جمعه 17 خرداد 1387, 10:43 صبح
سلام دوستان، لطفاً توضیح دهید که فرق بین new و gcnew در ویزوال سی چیست؟ چه وقت باید از انها استفاده کرد؟ من میدانم که برای تخصیص حافظه پویا استفاده میشوند، اما از هر کدام در کجا باید استفاده کرد و چه فرقی دارند؟

PC2st
جمعه 17 خرداد 1387, 11:53 صبح
gcnew برای تخصیص حافظه از managed heap استفاده میکنه، و new برای تخصیص حافظه از heap استفاده میکنه.
حافظه managed heap برای کدهای managed استفاده میشه، و حافظه heap برای کدهای native استفاده میشه.

Nima_NF
جمعه 17 خرداد 1387, 13:32 عصر
علاوه بر توضیحاتی که پست قبل داده شد، دقت کنید که در برنامه نویسی دات نت، gcnew بعد از Net. 2.0 جایگزین new شد و از این به بعد در C++/CLI برای کار با کلاس ها و قابلیت های .Net باید از gcnew استفاده کنید تا حافظه بر روی heap مدیریت شده باشد و garbage-collection و سایر موارد نوین در دات نت را در اختیار داشته باشید.

new هم برای وقتی که می خواهید از انواع unsafe استفاده کنید مثلا به جای یک string از نوع safe در دات نت، از آرایه ای از char استفاده کنید.