তাত্ত্বিকভাবে আমি এটি বলতে পারি
free(ptr);
free(ptr);
আমরা একটি স্মৃতি দুর্নীতি যেহেতু আমরা স্মৃতি মুক্ত করছি যা ইতিমধ্যে মুক্তি পেয়েছে।
তবে কি তবে
free(ptr);
ptr=NULL;
free(ptr);
ওএস যেহেতু একটি অপরিজ্ঞাত পদ্ধতিতে আচরণ করবে আমি কী ঘটছে সে সম্পর্কে এটির জন্য আসল তাত্ত্বিক বিশ্লেষণ পেতে পারি না। আমি যা কিছু করছি, এই স্মৃতি দুর্নীতি নাকি না?
একটি নল পয়েন্টার বিনামূল্যে কী বৈধ?
delete NULLসি ++ তে বৈধ নয়। মুছুন কনক্রিটের ধরণের নাল-পয়েন্টার মানগুলিতে প্রয়োগ করা যেতে পারে, তবে তা হয় না NULL। delete (int*) NULLআইনী, কিন্তু না delete NULL।
ptrমেমরিটির দিকে নির্দেশ করে এবং আপনি freeএটিতে কল না করেন, তবে স্মৃতিটি ফাঁস হবে। এটিকে সেট করা NULLমেমরির উপর আপনার হ্যান্ডেলটি হারাবে এবং ফুটো হয়ে যায়। যদি ptr ঘটে থাকে তবেNULL কল freeকরা একটি অপারেশন।
free(ptr)সঙ্গে ptr = NULL। কেউ এরকম কিছু বলেনি।