তাত্ত্বিকভাবে আমি এটি বলতে পারি
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
। কেউ এরকম কিছু বলেনি।