Error in gzfile(file, "wb") : cannot open the connection
In addition: Warning message:
In gzfile(file, "wb") :
cannot open compressed file 'data/multiple.rdata', probable reason 'No such
file or directory'
当我将其数据成员ps指向一个大字符串的HasPtr分配给另一个时, 有没有可能导致内存损坏?例如:
#include<string>
class HasPtr {
public:
HasPtr(const std::string &s = std::string()) :
ps(new std::string(s)), i(0) {}
HasPtr(const HasPtr &orig) :ps(new std::string(*orig.ps)), i(orig.i) {}
HasPtr &operator=(const HasPtr &rhs) {
*ps = *rhs.ps;
i = rhs.i;
return *this;
}
private:
std::string *ps;
int i;
};
答案 0 :(得分:1)
显示的代码缺少析构函数,这将导致内存泄漏。
添加适当的析构函数后,生成的类will be perfectly Rule-Of-Three compliant。因此,不会出现任何与记忆相关的问题。
答案 1 :(得分:1)
按值std::string
按住。除了作为字符串抽象之外,它还是一个资源管理类,因此请使用它。如果您这样做,您的课程将符合0/3/5规则,而无需您做任何额外的努力。
答案 2 :(得分:0)
当std::string
在操作期间耗尽内存时,会抛出异常,因此该过程不会破坏内存。