c++ - 解构 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;
}
}
解决方案
要保留所有数组内存块,您必须像这样使用删除:
delete[] m_data;
谢谢,罗宾。
推荐阅读
- python - 即使我返回所有内容,我的代码的递归似乎也不起作用
- java - Spring-Cache CacheManager 上的 SPI 是什么意思
- php - 从同一表单上传和重命名多个文件的问题
- google-apps-script - 取消选中 Google 表格中的复选框
- python - pyqtdeploy-sysroot:无法检测到 MSVC2015 或 MSVC2017
- mysql - MySQL选择具有每个不同值的随机行 - 逗号分隔输入
- asp.net-mvc - 无法使用 .net framework 4.5 安装 dapper 2.0.30
- c# - Azure 反序列化 JSON 响应 C#
- php - Yii2 命令控制器功能未在 docker 容器的 crontab 中执行
- dependency-injection - 带有任务调度的NestJs依赖注入不起作用