这可能是非常基本但我被困住了,根本不知道问题是什么。
主代码预定义为任务。目标是尽可能使用const。以下构造函数应该将文字字符串复制到const m_data并且工作正常但我无法释放内存 - 它总是留下1个块。我错过了什么?
的main.cpp
#include <iostream>
#include "immstring.hpp"
using namespace std;
using namespace Util;
int main()
{
const ImmutableString s1("Hello");
}
immu.hpp
#include <cstring>
namespace Util {
class ImmutableString {
public:
ImmutableString(const char* src);
~ImmutableString();
private:
char* const m_data;
};
}
immu.cpp
#include "immstring.hpp"
#include <iostream>
#include <cstring>
namespace Util
{
ImmutableString::ImmutableString(const char* src)
:m_data{strcpy(new char[strlen(src)+1],src)}{}
ImmutableString::~ImmutableString()
{
delete m_data;
}
}
答案 0 :(得分:1)
要保留所有数组内存块,必须使用如下删除:
delete[] m_data;
谢谢, 罗宾。