C++智能指针实现引用计数有必要另外再引入类吗?
C++智能指针实现引用计数有必要另外再引入类吗?
我是这样实现的
一样也没有发生悬挂指针和内存泄漏问题呀,求牛人指教
我是这样实现的
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
#ifdef _DEBUG
#define new new(_NORMAL_BLOCK,__FILE__,__LINE__)
#endif
class U_Ptr {
public:
U_Ptr(char *s = NULL):str(s) { count = new int(1);}
~U_Ptr()
{
if(--*count == 0) {
delete count;
delete str;
}
}
U_Ptr(const U_Ptr &orig):str(orig.str) {++(*orig.count); }
U_Ptr& operator=(const U_Ptr &rhs)
{
++*rhs.count;
if(--*count == 0) {
delete count;
delete str;
}
str = rhs.str;
count = rhs.count;
return *this;
}
void setstr(char *ip)
{
str = ip;
}
private:
int *count;
char *str;
};
int main()
{
{
U_Ptr a;
{
U_Ptr b(new char('b'));
a.setstr(new char('a'));
a = b;
}
}
_CrtDumpMemoryLeaks();
return 0 ;
}
一样也没有发生悬挂指针和内存泄漏问题呀,求牛人指教
...全文
相关推荐
C++ 引用计数技术及智能指针的简单实现
引用计数是智能指针实现中的关键技术之一,用于追踪对象被引用的次数,从而决定何时释放内存。**智能指针的原理**智能指针是一个类,它封装了一个原始指针,提供了类似原始指针的接口。
实现带引用计数的C++智能指针
引用计数是一种资源管理技术,用于跟踪资源被引用的次数。在智能指针的上下文中,每个资源对象都与一个计数器相关联。每当有一个新的引用指向该对象时,计数器就会增加;而当引用被销毁或不再指向该对象时,计数器就会减少。当计数器的值减少到零时,说明没有更多的引用指向该对象,资源就可以被安全地释放。这种方法简化了资源管理,因为程序员不需要手动调用释放函数,而是在对象生命周期的末尾,由引用计数机制自动进行清理。SharedPtr模板类允许SharedPtr。
C++实现 带引用计数的智能指针
本文将详细讨论如何在C++中实现一种带引用计数的智能指针。引用计数是一种常见的智能指针策略,它维护了一个内部计数,记录有多少个智能指针指向同一个对象。
智能指针与引用计数详解
在这个“智能指针与引用计数详解”的demo中,我们可以期待看到如何自定义智能指针类以及引用计数类的实现。通常,自定义的智能指针类需要包含以下关键功能:- 构造函数和析构函数,以正确初始化和清理资源。
C++11新特性之智能指针(shared_ptr/unique_ptr/weak_ptr)
C++11引入了智能指针作为现代C++编程的重要特性,极大地改善了内存管理的复杂性。智能指针是具有自动内存管理功能的对象,它们在适当的时候自动释放所指向的对象,防止内存泄漏。


