সুচিপত্র:

সি ++: 9 ধাপে সিঙ্গেলটন ডিজাইন প্যাটার্ন কিভাবে করবেন
সি ++: 9 ধাপে সিঙ্গেলটন ডিজাইন প্যাটার্ন কিভাবে করবেন

ভিডিও: সি ++: 9 ধাপে সিঙ্গেলটন ডিজাইন প্যাটার্ন কিভাবে করবেন

ভিডিও: সি ++: 9 ধাপে সিঙ্গেলটন ডিজাইন প্যাটার্ন কিভাবে করবেন
ভিডিও: assignment statement, basic types - int, float, bool 2024, নভেম্বর
Anonim
সি ++ এ সিঙ্গেলটন ডিজাইন প্যাটার্ন কিভাবে করবেন
সি ++ এ সিঙ্গেলটন ডিজাইন প্যাটার্ন কিভাবে করবেন

ভূমিকা:

এই নির্দেশিকা নির্দেশিকাটির উদ্দেশ্য হল ব্যবহারকারীকে তাদের সি ++ প্রোগ্রামে সিঙ্গলটন ডিজাইন প্যাটার্ন কিভাবে প্রয়োগ করতে হয় তা শেখানো। এটি করার সময়, এই নির্দেশ সেটটি পাঠককেও ব্যাখ্যা করবে কেন সিঙ্গলটনের উপাদানগুলি সেভাবে এবং কোড কীভাবে প্রক্রিয়া করা হয়। এটি জানা, ভবিষ্যতে আপনার ভবিষ্যতের সিঙ্গেলটনগুলিকে ডিবাগ করতে সহায়তা করবে। সিঙ্গলটন নকশা প্যাটার্ন কি? সিঙ্গেলটন ডিজাইনের প্যাটার্ন হল একটি নকশা প্যাটার্ন যেখানে কোডার এমন একটি ক্লাস তৈরি করে যা শুধুমাত্র একবারই ইনস্ট্যান্ট করা যায়, ক্লাসের পাবলিক ফাংশন মূলত যেকোনো জায়গায় অ্যাক্সেস করা যায়, যদি আপনি #প্রকল্পের অন্যান্য ফাইলে হেডার ফাইল অন্তর্ভুক্ত করেন।

সিঙ্গেলটন ডিজাইন প্যাটার্ন হল যেকোনো অবজেক্ট ওরিয়েন্টেড প্রোগ্রামার, সফটওয়্যার প্রোগ্রামার এবং গেম প্রোগ্রামারদের জন্য ডিজাইন প্যাটার্ন। সিঙ্গেলটন ডিজাইনের প্যাটার্নটি সেখানকার সবচেয়ে সহজ কোডিং ডিজাইন প্যাটার্নগুলির মধ্যে একটি। এটি শেখা আপনাকে ভবিষ্যতে অন্যান্য, আরো কঠিন, নকশা নিদর্শন শিখতে সাহায্য করতে পারে। এটি আপনাকে আপনার প্রোগ্রামের কোডগুলিকে এমনভাবে প্রবাহিত করতে সাহায্য করতে পারে যা আপনি ভাবেননি যে এটি সম্ভব।

অন্য ডিজাইনের প্যাটার্নের তুলনায় সিঙ্গলটন ডিজাইন প্যাটার্নের অসুবিধা সহজ হলেও, এই নির্দেশ সেটের মাঝারি অসুবিধা রয়েছে। এর মানে হল যে এই নির্দেশাবলীগুলি করার জন্য, আমরা সুপারিশ করি যে আপনি C ++ এর মৌলিক এবং আগাম সিনট্যাক্স প্রয়োজনীয়তাগুলি জানেন। আপনার সঠিক C ++ কোডিং শিষ্টাচারও জানা উচিত (যেমন ক্লাস ভেরিয়েবলগুলিকে ব্যক্তিগত রাখুন, হেডার ফাইল প্রতি একটি ক্লাস ইত্যাদি)। কিভাবে মেমরি মুক্ত করতে হয় এবং কিভাবে C ++ তে কনস্ট্রাক্টর এবং ডিস্ট্রাক্টর কাজ করে তাও আপনার জানা উচিত।

এই নির্দেশিকা নির্দেশিকাটি প্রায় 10-15 মিনিট সময় নেবে।

উপাদান প্রয়োজনীয়তা:

-একটি কম্পিউটার (পিসি বা ম্যাক হতে পারে) ভিজ্যুয়াল স্টুডিও চালাতে সক্ষম (যে কোন সংস্করণ)

-ভিসুয়াল স্টুডিওতে তৈরি একটি সহজ প্রোগ্রাম, যার সাহায্যে আপনি আপনার সিঙ্গলটন পরীক্ষা করতে পারেন

দ্রষ্টব্য: সিঙ্গেলটন নকশা প্যাটার্ন অন্য কোন C ++ সমর্থনকারী IDE বা কোডিং ইন্টারফেসে করা যেতে পারে, কিন্তু এই নির্দেশনা সেটের জন্য, আমরা ভিজ্যুয়াল স্টুডিও এন্টারপ্রাইজ সংস্করণ ব্যবহার করব।

ধাপ 1: হেডার ফাইল এবং সিপিপি ফাইল দিয়ে আপনার ক্লাস তৈরি করুন

হেডার ফাইল এবং সিপিপি ফাইল দিয়ে আপনার ক্লাস তৈরি করুন
হেডার ফাইল এবং সিপিপি ফাইল দিয়ে আপনার ক্লাস তৈরি করুন
হেডার ফাইল এবং সিপিপি ফাইল দিয়ে আপনার ক্লাস তৈরি করুন
হেডার ফাইল এবং সিপিপি ফাইল দিয়ে আপনার ক্লাস তৈরি করুন

এই দুটি ফাইল এবং ক্লাস একসাথে তৈরি করতে, ভিজ্যুয়াল স্টুডিওতে আপনার প্রজেক্ট / প্রোগ্রামটি খুলুন, সমাধান এক্সপ্লোরারে যান, ডান ক্লিক করুন এবং আপনার মাউস কার্সারের কাছে একটি বাক্স প্রদর্শিত হবে, "যোগ করুন" বিকল্পটি খুঁজুন, হভার করুন এর উপরে, এবং অন্য একটি বাক্স ডানদিকে উপস্থিত হওয়া উচিত। এই বাক্সে, আপনি "নতুন আইটেম.." বিকল্পটি সন্ধান করতে চান, এটিতে ক্লিক করুন এবং নীচের ছবির 1.1 চিত্রের অনুরূপ একটি উইন্ডো উপস্থিত হওয়া উচিত। এই উইন্ডোতে আপনি "C ++ ক্লাস" নির্বাচন করতে চান এবং তারপর "যোগ করুন" টিপুন। এটি আরেকটি উইন্ডো খুলবে যা ফটো 1.2 ছবির অনুরূপ। এই উইন্ডোতে, আপনি "ক্লাসের নাম" ক্ষেত্রে আপনার ক্লাসের নাম টাইপ করুন এবং ভিজ্যুয়াল স্টুডিওগুলি স্বয়ংক্রিয়ভাবে ক্লাসের নামের পরে প্রকৃত ফাইলের নাম দেবে। এই নির্দেশনার উদ্দেশ্যে, আমরা আমাদের শ্রেণীর নাম দিতে যাচ্ছি "ইঞ্জিন ডিবাগসিংলেটন", কিন্তু এটি যেকোনো বর্ণ ভিত্তিক নাম হতে পারে। আপনি এখন "ঠিক আছে" টিপুন এবং ধাপ 2 এ এগিয়ে যেতে পারেন।

দ্রষ্টব্য: সমাধান এক্সপ্লোরার এবং আপনার কম্পিউটারে ফাইলগুলি কোথায় রাখা হয়েছে তা আলাদা। সলিউশন এক্সপ্লোরারে কিছু সরানো বা তৈরি করা আপনার OS ফাইল এক্সপ্লোরারের মধ্যে ফাইলগুলিকে সরানো বা সংগঠিত করবে না। ফাইল এক্সপ্লোরার সাইডে আপনার ফাইলগুলিকে সংগঠিত করার একটি নিরাপদ উপায় হল সরানো, কিন্তু সলিউশন এক্সপ্লোরার থেকে নির্দিষ্ট ফাইল মুছে ফেলা নয়, ফাইল এক্সপ্লোরারে একই ফাইলগুলিকে পছন্দসই স্থানে সরান এবং তারপর সমাধান এক্সপ্লোরারে ফিরে যান, ডান ক্লিক করুন, "যোগ করুন" বিকল্পটি সন্ধান করুন, তারপরে "বিদ্যমান আইটেম" খুঁজুন এবং আপনার সরানো ফাইলগুলি সন্ধান করুন। শিরোলেখ এবং সিপিপি ফাইল দুটোই সরিয়ে নিন তা নিশ্চিত করুন।

ধাপ 2: কনস্ট্রাক্টরকে প্রাইভেট সেট করুন

কনস্ট্রাক্টরকে প্রাইভেটে সেট করুন
কনস্ট্রাক্টরকে প্রাইভেটে সেট করুন

আপনার সদ্য নির্মিত CPP ফাইল এবং হেডার ফাইলের সাথে, যদি আপনি এটি তৈরি করার সময় স্বয়ংক্রিয়ভাবে না খুলেন, তাহলে সমাধান এক্সপ্লোরারে যান এবং "EngineDebugSingleton.h" ক্লিক করুন এবং খুলুন। তারপর আপনি একটি "EngineDebugSingleton ()", ক্লাস ডিফল্ট কন্সট্রাকটর এবং "~ EngineDebugSingleton ()" ক্লাস ডিস্ট্রাক্টর দ্বারা স্বাগত জানানো হবে। এই ধাপের জন্য, আমরা কনস্ট্রাক্টরকে প্রাইভেটে সেট করতে চাই, এর অর্থ এই যে এই ফাংশনটি শুধুমাত্র ক্লাসের জন্য উপলব্ধ এবং অন্য কিছু নয়। এর সাহায্যে, আপনি কেবল ক্লাসের হেডার ফাইল এবং ক্লাসের অন্যান্য ফাংশনে ক্লাসের বাইরে একটি পরিবর্তনশীল বা ক্লাসকে মেমরিতে বরাদ্দ করতে পারবেন না। কনস্ট্রাক্টরকে ব্যক্তিগত রাখা ডিজাইনের প্যাটার্ন এবং সিঙ্গলেটন কীভাবে কাজ করে তার মূল চাবিকাঠি। আমরা ভবিষ্যতে ধাপে আবিষ্কার করব কিভাবে একটি সিঙ্গেলটনকে তাত্ক্ষণিক এবং অ্যাক্সেস করা যায়।

কন্সট্রাকটরকে প্রাইভেটে নিয়ে যাওয়ার পরে ক্লাসটি এখন এইরকম হওয়া উচিত (সংশ্লিষ্ট ছবির দিকে তাকান)

ধাপ 3: ডিস্ট্রাক্টরকে প্রাইভেটে সেট করুন

ডিস্ট্রাক্টরকে প্রাইভেটে সেট করুন
ডিস্ট্রাক্টরকে প্রাইভেটে সেট করুন

যেমন আমরা কনস্ট্রাক্টরের সাথে করেছি

ধাপ 2, এই ধাপের জন্য, আমরা এখন ডিস্ট্রাক্টরকে প্রাইভেটে সেট করব। কনস্ট্রাক্টরের মতো, ক্লাস ছাড়া, কিছুই, মেমরি থেকে ক্লাসের যেকোনো ভেরিয়েবল মুছে ফেলতে সক্ষম হবে।

এই ধাপটি শেষ করার পর ক্লাসকে এখন এইরকম দেখতে হবে। (সংযুক্ত ছবি দেখুন)

ধাপ 4: সিঙ্গেলটনে একটি স্ট্যাটিক পয়েন্টার ভেরিয়েবল তৈরি করা

সিঙ্গেলটনে একটি স্ট্যাটিক পয়েন্টার ভেরিয়েবল তৈরি করা
সিঙ্গেলটনে একটি স্ট্যাটিক পয়েন্টার ভেরিয়েবল তৈরি করা

এই ধাপে, আমরা একটি তৈরি করব

"EngineDebugSingleton*" টাইপের স্ট্যাটিক পয়েন্টার ভেরিয়েবল। এটি এমন ভেরিয়েবল হবে যা আমাদের সিঙ্গেলটনকে মেমরিতে বরাদ্দ করবে এবং আমাদের সিঙ্গেলটন মেমরিতে বরাদ্দ করার সময় পর্যন্ত এটি নির্দেশ করবে।

এই ভেরিয়েবল তৈরির পরে আমাদের হেডার ফাইলটি দেখতে কেমন হওয়া উচিত

ধাপ 5: একটি ইনস্ট্যান্স ফাংশন তৈরি করা

একটি ইনস্ট্যান্স ফাংশন তৈরি করা
একটি ইনস্ট্যান্স ফাংশন তৈরি করা

আমরা এখন একটি উদাহরণ দিতে চাই

ফাংশন ফাংশনটি একটি স্ট্যাটিক ফাংশন হতে হবে এবং আমাদের ক্লাস ("EngineDebugSingleton &") এর একটি রেফারেন্স ফেরত দিতে চাইবে। আমরা আমাদের ফাংশনকে Instance () বলেছিলাম। ফাংশনেই, আমরা প্রথমে পরীক্ষা করতে চাই যদি ptrInstance == nullptr (সংক্ষিপ্ত করা যেতে পারে! ptrInstance = new EngineDebugSingleton () করে বরাদ্দ করতে চান। এখানেই আপনি প্রকৃতপক্ষে মেমরিতে সিঙ্গলটন বরাদ্দ করেন। If স্টেটমেন্টের সুযোগ থেকে বেরিয়ে আসার পরে, আমরা ptrInstance যা নির্দেশ করছে তা ফিরিয়ে দেব, যা সিনট্যাক্স "*ptrInstance" দ্বারা চিহ্নিত করা হয়েছে। আমাদের স্ট্যাটিক পাবলিক ফাংশন তৈরির সময় আমরা এই ফাংশনটি ব্যাপকভাবে ব্যবহার করব, তাই সিঙ্গেলটন তৈরি করা হয়েছে এবং মেমরিতে বরাদ্দ করা হয়েছে কিনা তা আমরা পরীক্ষা করতে পারি। সংক্ষেপে, এই ফাংশনটি এটি তৈরি করে যাতে আপনি কেবলমাত্র একটি ক্লাস বরাদ্দ করতে পারেন এবং আর না।

ইন্সট্যান্স () ফাংশন তৈরির পর আমাদের ক্লাসটি এখন কেমন হওয়া উচিত। আপনি দেখতে পাচ্ছেন, আমরা যা করেছি তার সবই ক্লাসের প্রাইভেট সেকশনে রয়ে গেছে, এটি পরবর্তী কয়েক ধাপে একটু পরিবর্তন হতে চলেছে।

ধাপ 6: স্ট্যাটিক পাবলিক ফাংশন তৈরি করা

স্ট্যাটিক পাবলিক ফাংশন তৈরি করা
স্ট্যাটিক পাবলিক ফাংশন তৈরি করা
স্ট্যাটিক পাবলিক ফাংশন তৈরি করা
স্ট্যাটিক পাবলিক ফাংশন তৈরি করা
স্ট্যাটিক পাবলিক ফাংশন তৈরি করা
স্ট্যাটিক পাবলিক ফাংশন তৈরি করা

আপনি ফাংশনটি তৈরি করার পরে

ধাপ 5, আপনি স্ট্যাটিক পাবলিক ফাংশন করতে শুরু করতে পারেন। প্রতিটি পাবলিক ফাংশন এর সাথে চলার জন্য একটি ব্যক্তিগত ফাংশন থাকা উচিত, এই ফাংশনের নাম একই হতে পারে না। কেন ফাংশন স্ট্যাটিক করতে? আমরা পাবলিক ফাংশনগুলিকে অচল করে দিচ্ছি যাতে সেগুলি প্রকৃত বস্তু ছাড়াই অ্যাক্সেস করা যায়। তাই "EngineDebugSingleObj-> SomeFunction ()" এর মত কিছু করার পরিবর্তে, আমরা "EngineDebugSingleton:: Some Function ()" করি। এটি একটি সিঙ্গেলটনকে মূলত কোডের যেকোনো জায়গায় অ্যাক্সেস করা সম্ভব করে তোলে, তবে আপনি যে নির্দিষ্ট প্রকল্প ফাইলে শিরোনাম ফাইলটি #অন্তর্ভুক্ত করেছেন তার সাথে আপনি কাজ করছেন। এর সাহায্যে, আপনি সিঙ্গলটন এর যেকোনো 'পাবলিক ফাংশনের মাধ্যমে তৈরি করতে পারেন।

এই ধাপে আমাদের উদ্দেশ্যে আমরা দুটি পাবলিক স্ট্যাটিক অকার্যকর ফাংশন তৈরি করেছি, "যোগ ()" এবং "বিয়োগ ()"। ব্যক্তিগত বিভাগে, আমরা আরও দুটি ফাংশন, "PrivAdd ()" এবং "PrivSubtract ()"। আমরা "NumberOfThings" নামে একটি int ভেরিয়েবল যোগ করেছি। এই ফাংশনগুলির সংজ্ঞা আমাদের ক্লাসের CPP ফাইলে যাবে। ফাংশনটি সহজেই সিপিপি ফাইলে প্রবেশ করানোর জন্য, আপনি আপনার কার্সার দিয়ে ফাংশনটি হাইলাইট করুন, যার নিচে একটি সবুজ রেখা থাকা উচিত এবং "বাম ALT + ENTER" চাপুন, এটি আপনাকে সংজ্ঞা তৈরি করার বিকল্প দেবে। ক্লাসের সংশ্লিষ্ট CPP ফাইল। শিরোনাম ফাইলটি কেমন হওয়া উচিত তা দেখতে ফটো 6.1 দেখুন এবং আপনার সমস্ত ফাংশন সংজ্ঞা তৈরি করার পরে, আপনার সিপিপি ফটো 6.2 এর মতো হওয়া উচিত, তবে আপনার ফাংশন সংজ্ঞাগুলিতে তাদের কোনও কোড থাকবে না।

আপনি এখন আপনার ফাংশন সংজ্ঞায় ফটো 6.2 এর মতো একই কোড যুক্ত করতে চান। আগেই বলা হয়েছে, আমাদের পাবলিক ফাংশনগুলি Instance () ফাংশন ব্যবহার করবে, যা ptrInstance কি নির্দেশ করছে তা ফিরিয়ে দেবে। এটি আমাদের ক্লাসের ব্যক্তিগত ফাংশন অ্যাক্সেস করতে দেয়। যে কোনও সিঙ্গেলটনের পাবলিক ফাংশনের সাথে, আপনার কেবল সেই ইনস্ট্যান্স ফাংশনটি কল করা উচিত। এর একমাত্র ব্যতিক্রম আমাদের টার্মিনেট ফাংশন।

দ্রষ্টব্য: এই ধাপে দেখানো সঠিক পাবলিক এবং প্রাইভেট ফাংশনগুলি প্রয়োজনীয় নয়, প্রাইভেট ফাংশনে আপনার বিভিন্ন ফাংশনের নাম এবং অপারেশন থাকতে পারে, কিন্তু যেকোনো ধরনের পাবলিক ফাংশনের জন্য আপনার সাথে একটি ব্যক্তিগত ফাংশন থাকা উচিত এবং পাবলিক ফাংশন সবসময় আমাদের ক্ষেত্রে, Instance () ফাংশন ব্যবহার করা উচিত।

ধাপ 7: টার্মিনেট ফাংশন তৈরি করা

টার্মিনেট ফাংশন তৈরি করা
টার্মিনেট ফাংশন তৈরি করা
টার্মিনেট ফাংশন তৈরি করা
টার্মিনেট ফাংশন তৈরি করা

যেহেতু আমরা কেবল আমাদের ক্লাসে মেমরি থেকে আমাদের সিঙ্গলটনকে নির্মূল করতে পারি, তাই আমাদের অবশ্যই একটি স্ট্যাটিক পাবলিক ফাংশন তৈরি করতে হবে। এই ফাংশনটি ptrInstance এ ডিলিটকে কল করবে, যা ক্লাস ডিস্ট্রাক্টরকে কল করে এবং তারপর আমরা ptrInstance কে আবার nullptr এ সেট করতে চাই যাতে আপনার প্রোগ্রাম শেষ না হলে এটি আবার বরাদ্দ করা যায়। আপনি যে কোন সিঙ্গেলটনের প্রাইভেট ভেরিয়েবলে আপনার বরাদ্দকৃত কোন মেমোরি পরিষ্কার করতে আপনার সিঙ্গলেটন সমাপ্ত করতে চান।

ধাপ 8: PtrInstance Nullptr এ সেট করা

PtrInstance Nullptr এ সেট করা
PtrInstance Nullptr এ সেট করা

আপনার সিঙ্গেলটন সম্পূর্ণ করার জন্য, আপনি EngineDebugSingleton. CPP ফাইলের দিকে যেতে চান এবং CPP ফাইলের শীর্ষে, আমাদের উদাহরণে, "EngineDebugSingleton* EngineDebugSingleton:: ptrInstance = nullptr" টাইপ করুন।

এটি করা প্রাথমিকভাবে ptrInstance কে nullptr এ সেট করবে, তাই যখন আপনি প্রথমবারের মতো উদাহরণ ফাংশনের মধ্য দিয়ে যাবেন, তখন আমাদের ক্লাস মেমরিতে বরাদ্দ করার অনুমতি দেওয়া হবে। এটি ছাড়া, আপনি সম্ভবত একটি ত্রুটি পাবেন কারণ আপনি এমন মেমরি অ্যাক্সেস করার চেষ্টা করবেন যার জন্য কিছু বরাদ্দ নেই।

ধাপ 9: পরীক্ষা এবং উপসংহার

পরীক্ষা এবং উপসংহার
পরীক্ষা এবং উপসংহার

আমরা এখন পরীক্ষা করতে চাই যে আমাদের সিঙ্গলটন কাজ করে তা নিশ্চিত করার জন্য, এতে আমাদের পাবলিক ফাংশনগুলিকে কল করা জড়িত হবে যেমন ধাপ 6 -এ বর্ণিত হয়েছে এবং আমরা সুপারিশ করছি যে আপনি আপনার কোডের মাধ্যমে ধাপে ধাপে ব্রেকপয়েন্ট সেট করুন এবং দেখুন যে সিঙ্গলটন কাজ করছে এটা করা উচিত. আমাদের প্রারম্ভিক বিন্দু আমাদের প্রকল্পের main.cpp এ থাকবে এবং আমাদের main.cpp এখন নিচের চিত্রের মত দেখাচ্ছে।

অভিনন্দন! আপনি সিংগেলটন ডিজাইন প্যাটার্নের প্রথম বাস্তবায়ন সম্পূর্ণ করেছেন। এই নকশা প্যাটার্ন দিয়ে, আপনি এখন বিভিন্ন উপায়ে আপনার কোড স্ট্রিমলাইন করতে পারেন। উদাহরণস্বরূপ, আপনি এখন ম্যানেজার সিস্টেমগুলি তৈরি করতে পারেন যা আপনার প্রোগ্রামের রান টাইম জুড়ে কাজ করে, যা স্ট্যাটিক ফাংশনের মাধ্যমে অ্যাক্সেস করা যায় যেখানেই আপনি ক্লাস অন্তর্ভুক্ত করেছেন।

আপনার চূড়ান্ত হেডার ফাইলটি 7.1 ছবির মতো হওয়া উচিত। আপনার সিঙ্গলটনের সংশ্লিষ্ট সিপিপি ফাইলটি step নং ধাপে দেখানো কোডের ফাইলের উপরের অংশে ফটো 2.২ এর মতো হওয়া উচিত। এই নির্দেশনাটি আপনাকে সিঙ্গেলটন ডিজাইন প্যাটার্নের একটি সহজ কাঠামো প্রদান করেছে

সমস্যা সমাধানের পরামর্শ:

মেমরি সম্পর্কিত ত্রুটি পাচ্ছেন?

নিশ্চিত করুন যে আপনি ধাপ 7 এবং ধাপ 8 পড়ছেন তা নিশ্চিত করার জন্য আপনি ptrInstance কে nullptr এ সেট করছেন।

অসীম লুপ ঘটছে?

পাবলিক ফাংশনগুলির জন্য নিশ্চিত করুন, তাদের সংজ্ঞায় আপনি ব্যক্তিগত ফাংশনকে কল করছেন, একই পাবলিক ফাংশন নয়।

সিঙ্গেলটনের মধ্যে বরাদ্দকৃত বস্তুগুলি মেমরি লিকের কারণ?

নিশ্চিত করুন যে আপনি আপনার প্রোগ্রাম কোডের মধ্যে উপযুক্ত হলে আপনার সিঙ্গেলটনের টার্মিনেট ফাংশনটি কল করুন, এবং আপনার সিঙ্গলটনের ধ্বংসকারীর মধ্যে, নিশ্চিত করুন যে আপনি সিঙ্গেলটন কোডের আওতায় মেমরিতে বরাদ্দ করা কোনো বস্তুকে ডি-বরাদ্দ করেছেন।