我刚开始,有些东西我用指针不明白。 我有以下代码返回一个我不知道为什么的错误:
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/