আমি পড়ছি এমন একটি সি ++ বইতে বলা হয়েছে যে যখন কোনও পয়েন্টার delete
অপারেটরটি মেমরিটির দিকে নির্দেশ করে সেই স্থানে মেমরিটি ব্যবহার করে মুছে ফেলা হয় তবে এটি "মুক্ত" হয় এবং এটি ওভাররাইট করা যায়। এটি আরও উল্লেখ করে যে পয়েন্টারটি একই জায়গায় চিহ্নিত করা অবিরত থাকবে যতক্ষণ না এটি পুনরায় সাইন করা হয় বা সেট না করা হয় NULL
।
ভিজ্যুয়াল স্টুডিও 2012 তে; ব্যাপারটা মনে হয় না!
উদাহরণ:
#include <iostream>
using namespace std;
int main()
{
int* ptr = new int;
cout << "ptr = " << ptr << endl;
delete ptr;
cout << "ptr = " << ptr << endl;
system("pause");
return 0;
}
আমি যখন এই প্রোগ্রামটি সংকলন এবং চালনা করি তখন আমি নিম্নলিখিত আউটপুটটি পাই:
ptr = 0050BC10
ptr = 00008123
Press any key to continue....
পরিষ্কারভাবে মুছে ফেলা হবে এমন ঠিকানাটি পরিবর্তনের দিকে ইঙ্গিত করছে!
এটি কেন ঘটছে? বিশেষত ভিজ্যুয়াল স্টুডিওর সাথে এর কিছু যুক্ত রয়েছে?
এবং যদি মুছুন এটি যেভাবেই দেখানো হচ্ছে ঠিকানাটি পরিবর্তন করতে পারে, তবে কেন NULL
কিছু এলোমেলো ঠিকানার পরিবর্তে পয়েন্টারটিকে স্বয়ংক্রিয়ভাবে সেট করে মুছবেন না ?