# Native Code > برنامه نویسی با C > برنامه نویسی با زبان C و ++C > حرفه ای: خطاهای گمراه کننده در C++‎

## hosseinkhosravi

C++‎ زبانی است که دست برنامه نویس را کاملا باز گذاشته و همین موضوع سبب می شود که برنامه نویس اشتباهاتی بکند که نه خودش می فهمد و نه کامپایلر :افسرده:  . راه اندازی این مبحث به منظور اشتراک گذاشتن اشتباهاتی است که ممکن است ساعتها ذهن شما را درگیر کرده باشد و وقتی متوجه اشتباه خودتان شده اید با تعجب گفته اید ای داد چه اشکال ساده ای :قهقهه:  ما رو علاف کرده بود. 
جستجویی که کردم چنین موضوعی در تالار نبود، لیکن اگر از قبل بوده طبعا این موضوع باید بسته بشه!

----------


## hosseinkhosravi

یکی از کاربردهای اشاره گرها، تخصیص حافظه است. مثلا برای تخصیص 50 خانه حافظه از نوع int به صورت زیر عمل می کنیم:
int* data = new int(50);ولی این کد 50 خانه حافظه تخصیص نمی دهد! تنها یک خانه حافظه تخصیص می دهد که  مقدار آن خانه هم با عدد 50 پر می شود! چرا؟
چون به جای [] از () استفاده کرده ایم! درستش این است
int* data = new int[50];

----------


## hosseinkhosravi

خطای دیگری که معمولا مبتدیان دچار آن می شوند و گاهی اوقات کامپایلر هم نمی فهمد استفاده از عملگر تخصیص به جای مساوی است. مثلا می خواهیم چک کنیم آیا x برابر 10 است می نویسیم:
if (x = 10)
//do something
لیکن همیشه بدنه if اجرا می شود! دلیلش این است که به جای استفاده از عملگر مساوی == از عملگر تخصیص = استفاده کرده ایم و به این ترتیب ابتدا x برابر 10 شده و چون 10 مقدار غیر صفر است، بدنه if همواره اجرا خواهد شد!

----------

