加油啦~打工人~用智能指针解决内存泄漏的一种思考(忘记delete)

声明一个结构体,具有构造以及析构函数:
typedef struct _File
{
	unsigned char *pData;
	int size;
	_File(int size)
	{
		std::cout<<"1111111111"<<endl;
		pData = new unsigned char[size];
		memset(pData,0,size);
	}
	~_File()
	{
		std::cout<<"2222222222"<<endl;
		if (pData)
		{
			delete[] pData;
			pData = NULL;
		}
	}
};

在main函数中这样用,使用boost智能指针,自动释放的同时,调用我们的析构函数,实现我们的手动delete

boost::lockfree::queue<struct _File*,boost::lockfree::capacity<1024>> m_queues;
	for (int i =0; i < 300; i ++)
	{
		boost::shared_ptr<struct _File> m_p(new struct _File(11));
		m_queues.push(m_p.get());
	}
	int a = 65535;

	while(a > 0)
	{
		//boost::shared_ptr<struct _File> m_p(new struct _File);
		struct _File*p = NULL;
		m_queues.pop(p);
		if (p == NULL)
		{
			while(1);
		}else
		{
			std::cout<<"3333333"<<std::endl;
			std::cout<<"pop"<<sizeof(struct _File)<<std::endl;
		}
		
	}

在这里插入图片描述

总结:这样能够避免忘记delete,个人感觉是一个不错的方式,能够提高代码质量;希望后面能够继续改进,加油啦,打工人希望自己越来越强

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShaYQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值