C++智能指针实现引用计数有必要另外再引入类吗?

caschaoxin caschaoxin 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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++ 引用计数技术及智能指针的简单实现

引用计数是智能指针实现中的关键技术之一,用于追踪对象被引用的次数,从而决定何时释放内存。**智能指针的原理**智能指针是一个类,它封装了一个原始指针,提供了类似原始指针的接口。

weixin_38682242

实现带引用计数的C++智能指针

引用计数是一种资源管理技术,用于跟踪资源被引用的次数。在智能指针的上下文中,每个资源对象都与一个计数器相关联。每当有一个新的引用指向该对象时,计数器就会增加;而当引用被销毁或不再指向该对象时,计数器就会减少。当计数器的值减少到零时,说明没有更多的引用指向该对象,资源就可以被安全地释放。这种方法简化了资源管理,因为程序员不需要手动调用释放函数,而是在对象生命周期的末尾,由引用计数机制自动进行清理。SharedPtr模板类允许SharedPtr。

金刚廉神兽

C++实现 带引用计数的智能指针

本文将详细讨论如何在C++中实现一种带引用计数的智能指针。引用计数是一种常见的智能指针策略,它维护了一个内部计数,记录有多少个智能指针指向同一个对象。

qq250735364

智能指针与引用计数详解

在这个“智能指针与引用计数详解”的demo中,我们可以期待看到如何自定义智能指针类以及引用计数类的实现。通常,自定义的智能指针类需要包含以下关键功能:- 构造函数和析构函数,以正确初始化和清理资源。

OODeveloper

C++11新特性之智能指针(shared_ptr/unique_ptr/weak_ptr)

C++11引入了智能指针作为现代C++编程的重要特性,极大地改善了内存管理的复杂性。智能指针是具有自动内存管理功能的对象,它们在适当的时候自动释放所指向的对象,防止内存泄漏。

weixin_38670949
评论 4
收藏 已收藏
分享
返回顶部
caschaoxin
C++ 语言 65,214 成员 250,514 内容