class string {
public:
string( char const* t ) : s(t) {}
~string() { delete s; }
char const* c_str() const { return s; }
private:
char const* s;
};
我被问到上面有什么内存问题,现在我一般都不会看到记忆,甚至不用C语言编程,所以我不知道,现在从我所知道的一点点C,我认为问题在于没有明确的内存分配和const *
错误,但是,我在这里提出问题,看看其他人的想法。
答案 0 :(得分:4)
从类定义中不清楚谁负责删除指针。如果构造函数的参数是指向字符串文字的第一个字符的指针,该怎么办。在这种情况下,使用删除(更确切地说是删除[])只是错误。
还不清楚它是否是指向单个字符的指针并且必须使用delete,或者它是指向数组第一个字符的指针,并且必须使用delete []。
P.S。我总是想知道为什么有些程序员会尝试在面试中解决一些任务。面试不是考试。如果要求您解决某些任务,那么这意味着您正在处理不尊重您的白痴。 从不在面试中做任何作业。
答案 1 :(得分:2)
构造函数不为其参数分配任何内存;它只是保存指针。当析构函数被调用时,它将释放其他人分配的内存。
答案 2 :(得分:2)
这里有几个(记忆)问题: