c++ - 删除指针时出错

标签 c++ pointers delete-operator

我刚开始,有些东西我用指针不明白。 我有以下代码返回一个我不知道为什么的错误:

std::string key = "myKey";    
const unsigned char* aesKey = reinterpret_cast<const unsigned char *> (key.c_str());

// Executing some stuffs

delete aesKey;

代码第一次执行时一切正常,但第二次我得到一个错误,如果我没有 delete 行我就不会得到这个错误(相反我有内存泄漏,非常糟糕)。

有人可以向我解释为什么这不起作用吗?

下面的示例在相同的上下文中工作正常(相同的方法,...)

unsigned char* test = new char;
//doing some stuff
delete test;

最佳答案

首先:您不拥有该 C 字符串,因此delete[] 不属于您。 std::string 仍然拥有它,稍后将删除[]

第二:数组是用delete[]删除的,而不是delete。所以你无论如何都使用了错误的运算符。

关于c++ - 删除指针时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11119588/

相关文章:

c - 如何将空指针(结构返回类型)更改为声明的结构?

c - 指针和双指针练习

c++ - 使用没有逻辑的删除

c++ - Qt/C++ 从 QPolygonF 继承为 QList 项

C++使用ifstream读取文件

c++ - 在 valgrind 中运行程序时连接超时

c++ - 如何对数组中的字符串进行排序 C++

c++ - 检查指针是否指向标准 C/C++ 中的数组内部

c++ - 成员函数中 'delete this' 的用处

c++ - new 或 new[] 运算符