itk smartpoint 以及内存管理研究

本文探讨了ITK库中智能指针的使用及其内存管理机制,通过查看源码了解到其通过引用计数实现内存自动管理。作者分享了因未能深入理解这一机制而遇到的低级错误教训,强调了看源码和彻底理解技术的重要性。同时,建议避免在有智能指针的情况下使用常规对象指针,以减少潜在错误。作者反思自己的浮躁心态,认为良好的编程习惯是避免问题的关键。
摘要由CSDN通过智能技术生成


对itk中的内存如何管理一直都是模模糊糊,用的都是只能指针,感觉很像cocos中的内存管理。但是由于自己的程序经常要对一段很大的连续内存进行分配和释放,导致老是内存分配失败,是要好好研究一下了。

看了源码,才发现,内存管理就是用智能指针和引用计数来实现的。

class object
{
public:
	void register()
	{
		++m_reference;
	}
	void unRefister()
	{
		if(!(--m_reference))
			delete this;
	}
private:
	int m_reference;
}
template <T>
class smartPoint<T>
{
public:
	typedef smartPoint<T> self
	void register()
	{
		m_point->register();
	}
	void unRefister()
	{
		m_point->unRegister();
	}
	void operator =(self& right);
private:
	m_point;
}

简化起来大概就是这样,smartPoint负责把对象(指针)封装起来,可以完全把smartpoint当作局部变量来使用,。外部释放对a的引用时,引用计数就会减一,反之加一。外部有引用对象a的时候&#x
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值