C++ - 关于内存管理的问题

Mos*_*vah 0 c++ memory-management

我有以下课程:

class StringHolder
{
public:
    StringHolder(std::string& str)
    {
        m_str = &str;
    }

private:
    std::string* m_str;
};
Run Code Online (Sandbox Code Playgroud)

并拥有以下字符串object(str),大小为1,024KB:

char c = 'a';
unsigned long long limit = 1024 * 1024;
std::stringstream stream;
for(int i = 0; i < limit; i++)
{
    stream << c;
}
std::string str = stream.str();
Run Code Online (Sandbox Code Playgroud)

每当我用字符串初始化StringHolder类时,它都不会复制该字符串.那是因为我使用了引用和指针,但我不确定我是否正确使用它们:

问题:我是否正确使用了引用和指针?

Pra*_*rav 5

正确的实现应该是这样的

class StringHolder
{
public:
    StringHolder(const std::string& str) //note const
                 : m_str(str){}          //use initialization list

private:
    std::string m_str; //no need to make it a pointer
};
Run Code Online (Sandbox Code Playgroud)