কম্পিউটার টিউটোরিয়াল

C++-এ স্মার্ট পয়েন্টার (Smart Pointer) কী এবং কখন ব্যবহার করবেন?

স্মার্ট পয়েন্টার হলো একটি ক্লাস যা র‍ (raw) C++ পয়েন্টারকে র‍্যাপ করে এবং যেই রিসোর্সটি পয়েন্ট করে সেটির ম্যানেজমেন্ট করে (RAII)। এটি একটি কয়াসি-গারবেজ কলেক্টরের মতো কাজ করে।

প্রধান স্মার্ট পয়েন্টার (C++11+)

  • std::unique_ptr: এক্সক্লूसিভ অনারশিপ, কপি করা যায় না (মুভ করা যায়), শূন্য ওভারহেড। ডিফল্ট চয়েস।
  • std::shared_ptr: শেয়ার্ড অনারশিপ, র‍েফারেন্স কাউন্টিং, কিছু ওভারহেড। যখন একাধিক অনার থাকবে।
  • std::weak_ptr: shared_ptr-এর নন-অনারশিপ অবজারভার, সাইকリック র‍েফারেন্স ব্রেক করতে।

কেন ব্যবহার করবেন?

  • ম্যানুয়াল new/delete এড়াতে (মেমরি লিক, এক্সসেপশন সেফটি সমস্যা)
  • অনারশIP সেমানটিক্স স্পষ্ট করতে (unique vs shared)
  • RAII নিশ্চিত করতে (স্কোপ শেষ হলে অটো ক্লিনআপ)

উদাহরণ

#include <memory>
#include <iostream>

void use_unique() {
    auto p = std::make_unique<int>(42); // C++14
    std::cout << *p;
} // p ডিস্ট্রয় হলে মেমরি অটোমেটিক মুক্ত

void use_shared() {
    auto p1 = std::make_shared<int>(10);
    auto p2 = p1; // রেফারেন্স কাউন্ট = 2
} // শেষ shared_ptr ডিস্ট্রয় হলে মেমরি মুক্ত

সুপারিশ: প্রায় সব সময় unique_ptr ব্যবহার করুন। shared_ptr শুধু শেয়ার্ড অনারশIP দরকার হলে। new/delete ম্যানুয়ালি লিখবেন না।

  1. গুগল ক্রোম কী এবং আপনি কি এটি ব্যবহার করা উচিত?

  2. স্প্লিট টানেলিং কী এবং আপনার কি এটি ব্যবহার করা উচিত?

  3. NordPass কী এবং আপনাকে এটি কেন ব্যবহার করা উচিত?

  4. HDR কী এবং অ্যান্ড্রয়েডে এটি কীভাবে ব্যবহার করবেন