Products
96SEO 2025-07-15 08:17 2
C++的智能指针是新潮C++编程中的核心概念, 它们能自动管理内存,从而少许些内存泄漏的凶险。在Linux周围下用智能指针,能使C程序更加健壮和高大效。
智能指针是一种特殊的对象,它封装了一个原始指针,并给了自动内存管理的功能。在C++11中引入了三种基本上的智能指针:std::unique_ptr、std::shared_ptr和std::weak_ptr。
std::unique_ptr是一个拥有所管理对象的独占指针。它确保在同一时候只有一个std::unique_ptr能指向同一个对象。当std::unique_ptr被销毁时它所管理的对象也会被自动销毁。
#include
std::unique_ptr p1);
// 用p1
// 当p1被销毁时new int所指向的对象也会被销毁
std::shared_ptr允许优良几个指针共享对同一个对象的引用。它通过引用计数来管理内存,当再说说一个std::shared_ptr被销毁时所管理的对象才会被销毁。
#include
std::shared_ptr p1);
std::shared_ptr p2 = p1;
// p1和p2共享对同一个int的引用
// 当p1和p2都被销毁时 new int所指向的对象才会被销毁
std::weak_ptr与std::shared_ptr配合用,它给了对由std::shared_ptr管理的对象的没劲引用。没劲引用不会许多些引用计数,所以呢不会阻止对象的销毁。
#include
std::shared_ptr shared = std::make_shared;
std::weak_ptr weak = shared;
// weak不许多些引用计数,所以呢不会阻止shared所管理的对象的销毁
#include
class Singleton {
private:
static std::shared_ptr instance;
Singleton {}
public:
static std::shared_ptr getInstance {
if {
instance = std::make_shared;
}
return instance;
}
};
std::shared_ptr Singleton::instance = nullptr;
int main {
auto singleton = Singleton::getInstance;
// 用singleton
return 0;
}
在Linux C中用智能指针能巨大巨大搞优良程序的平安性和效率。通过搞懂智能指针的干活原理和用场景,能写出更健壮和高大效的C程序。
Demand feedback