现代C++的资源管理思路,即无需手动释放资源,而是通过将资源与对象生命期绑定,在对象析构的时候自动释放资源,从而把资源管理转换为对象生命期管理,而后者是早已解决的事情。是正是C++最重要的编程技法:RAII
以上这段话摘自:《linux多线程编程 使用muduo C++网路库》
#include <stdio.h>
#include <memory>
#include <iostream>
typedef std::shared_ptr<FILE> FilePtr;
const int kBufSize = 1024;
int main()
{
FILE *fp = ::fopen("1.txt", "r"); // 打开一个文件以用于读写
if (fp != NULL)
{
FilePtr ctx(fp, ::fclose);
char buf[kBufSize] = {0};
size_t nread = ::fread(buf, 1, sizeof buf, fp);
std::cout << "file:" << buf;
}
else // 失败
{
std::cout << "FileServer - no such file";
}
getchar();
return 0;
}
这段代码主要为了演示std::shared_ptr如何帮助管理资源,另外:文件读写的部分较为简单,具体在项目中需要大家自己去完善。
其中1.txt的内容为:
hello haha
运行结果:
file:hello haha