首页 > 解决方案 > 解构 const 指针?

问题描述

这可能是非常基本的,但我被卡住了,根本不知道问题出在哪里。

主代码预定义为任务。目标是尽可能多地使用 const。以下构造函数只是应该将文字字符串复制到 const m_data 并且工作正常,但我无法释放内存 - 它总是留下 1 个块。我错过了什么?

主文件

#include <iostream>
#include "immstring.hpp"
using namespace std;
using namespace Util;

int main() 
{
  const ImmutableString s1("Hello");
}

免疫.hpp

#include <cstring>
namespace Util {
class ImmutableString {
public:
    ImmutableString(const char* src);
    ~ImmutableString();

private:
    char* const m_data;
};
}

免疫球蛋白

#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;
}
}

标签: c++constructorconstantsvalgrind

解决方案


要保留所有数组内存块,您必须像这样使用删除:

delete[] m_data;

谢谢,罗宾。


推荐阅读