这可能是非常基本的,但我被卡住了,根本不知道问题出在哪里。
主要代码被预定义为一个任务。目标是尽可能多地使用 const。以下构造函数只是应该将文字字符串复制到 const m_data 并且工作正常但我无法释放内存 - 它总是留下 1 个 block 。我错过了什么?
主要.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;
};
}
免疫.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;
}
}
最佳答案
要保留所有数组内存块,您必须像这样使用 delete :
delete[] m_data;
谢谢, 罗宾。
关于c++ - 解构const指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50255397/