我认为new
或智能指针需要内存大小。如果一个类包含字符串,我会分配该类。然后我为字符串分配一个新值,它是在内存上吗?
// a.hpp
#include <string>
#include <memory>
#include <armadillo>
class A {
public:
A(const std::string &);
private:
struct Impl;
std::shared_ptr<Impl> impl;
};
// a.cc
struct A::Impl {
Impl(const std::string &f)
{
// read config file and get name and size of x
name = "abc";
x.zeros(2, 3);
}
std::string name;
arma::mat x;
};
A::A(const std::string &f):
impl(std::make_shared<Impl>(f)) {}
对于这个例子,我想我只分配N
内存,但我使用N+M
内存。这很危险吗?
答案 0 :(得分:1)
std::string
的赋值运算符将处理所有必需的内存分配。你不必担心这一点。