您的位置:首页 > 编程语言 > C语言/C++

使用适当的智能指针优化下面的程序

2017-05-25 19:57 399 查看
#include <iostream>
#include <cstring>

char *get(const char *s)
{
int size = std::strlen(s);
char *text = new char[size + 1];
std::strncpy(text, s, size + 1);
return text;
}

void print(char *text)
{
std::cout << text << std::endl;
}

int main(int argc, char *argv[])
{
if (argc < 2)
{
std::cerr << argv[0] << " <data>" << std::endl;
return 1;
}

char *text = get(argv[1]);
print(text);
delete[] text;
}


#include "boost/shared_ptr.hpp"
#include <iostream>
#include <cstring>

boost::shared_ptr<char> get(const char *s)
{
boost::shared_ptr<char> txt(new char[std::strlen(s)+1]);
strcpy_s(txt.get(), std::strlen(s)+1, s);
return txt;
}

void print(boost::shared_ptr<char> text)
{
std::cout << text << std::endl;
}

int main(int argc, char *argv[])
{
if (argc < 2)
{
std::cerr << argv[0] << " <data>" << std::endl;
return 1;
}

boost::shared_ptr<char> text(get(argv[1]));
print(text);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  智能指针 c++ boost