dar*_*eir 2 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;
Run Code Online (Sandbox Code Playgroud)
第一次代码执行一切正常,但第二次我得到一个错误,如果我没有delete线,我没有得到(相反,我有一个内存泄漏,非常糟糕).
有人可以解释一下为什么这不起作用?
下面的示例在相同的上下文中工作正常(相同的方法,...)
unsigned char* test = new char;
//doing some stuff
delete test;
Run Code Online (Sandbox Code Playgroud)
第一:你不拥有那个C字符串,所以不是你的delete[].在std::string仍然拥有它,会delete[]后它.
第二:数组被删除delete[],而不是delete.所以你无论如何都在使用错误的操作员.