封装函数时候,函数内分配内存简单管理方法。

来源:互联网 发布:淘宝版阿里旺旺下载 编辑:程序博客网 时间:2024/04/30 13:39

网上常见人这样封装代码,这种代码缺点就是要手工处理new处理的内存空间。

//读取一个文件的内容到缓冲区,下面的代码仅是例子,不写错误处理。int LoadToBuffer(const char* filename, byte* buffer){ifstream ifs(filename);int filesize = static_cast<int>(boost::filesystem::file_size(filename));buffer = new byte[filesize];ifs.read(buffer,filesize);ifs.close();return 0;}

处理的办法,有下面几种。

1.用智能指针代替。

2.用vector<char>代替。

#include <iostream>#include <string>#include <vector>#include <fstream>#include <boost/filesystem.hpp>#include <locale>using namespace std;int LoadToBuffer(const char* filename, vector<char>& cv){ifstream ifs(filename);int filesize = static_cast<int>(boost::filesystem::file_size(filename));cv.resize(filesize);ifs.read(&cv[0], filesize);ifs.close();return 0;}int main(){std::wcout.imbue(locale("chs")); //wcout 显示中文vector<char> cv;LoadToBuffer("main.cpp", cv);wcout << (wchar_t*)&cv[2] << endl;//因为是UNICODE格式的文件,去掉前面的FFFE标准}


原创粉丝点击