C++工作笔记-作用域的巧妙使用,释放堆区创建的资源

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq78442761/article/details/82705292

比如:

要做一个接口,API,函数给别人用,

放回一堆数据给了那个指针,那么,这个new出的东西,是谁来释放!!!!!

解决方法:可以在定义一个类,接口,函数,用于释放,并使用了作用域,和类的特点,

如下代码:

#include<iostream>
#include <vector>
using namespace std;

struct Data{
	int value_1;
	int value_2;
	int value_3;
	Data(int value1,int value2,int value3){
		value_1=value1;
		value_2=value2;
		value_3=value3;
	}
};

class TestDemo{
public:
	TestDemo(vector<Data*> &data){
		m_data=data;
	}
	~TestDemo(){
		cout<<"TestDemo descontruction called!"<<endl;
		for(int i=0;i<(int)m_data.size();i++){
			delete m_data[i];
		}
	}
private:
	vector<Data*> m_data;
};

void createData(vector<Data*> &data){
	for(int i=0;i<100;i++){
		data.push_back(new Data(i,i+1,i+2));
	}
}

void main(){
	vector<Data*> m_data;
	createData(m_data);
	{
		TestDemo testDemo(m_data);
	}

	getchar();
}

运行截图如下:

可以看到由createData这函数new出的东西,被TestDemo这个类给释放了!

这里只说明一个思路!!!!

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/82705292