解构const指针?

时间:2018-05-09 14:03:29

标签: c++ constructor const valgrind

这可能是非常基本但我被困住了,根本不知道问题是什么。

主代码预定义为任务。目标是尽可能使用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;
}
}

1 个答案:

答案 0 :(得分:1)

要保留所有数组内存块,必须使用如下删除:

delete[] m_data;

谢谢, 罗宾。