我有一个wchar_t *的向量,像这样:
std::vector<wchar_t*> myvector;
和一个带字符串并将其插入向量
的函数void myfunction(wchar_t* mystring)
{
myvector.push_back(mystring);
}
myfunction(L"this is my string");
当我关闭程序时,我需要删除向量的已分配内存,以便我没有内存泄漏,为此我正在尝试这样做:
for (std::vector<wchar_t*>::iterator it = myvector.begin(); it != myvector.end(); ++it)
{
delete [] *it;
}
它编译,一切正常,但是当它释放内存的时候我有一个粗略的错误:
error http://k.min.us/iklWGE.png
为什么呢?我该如何解决这个问题?
答案 0 :(得分:4)
使用此myfunction(L"this is my string");
,您不会创建新字符串。它是一个存储在exe中某个地方的常量字符串。由于您没有明确new
它,因此您也不需要delete
仅成对使用new and delete
和new[] and delete[]
!
答案 1 :(得分:1)
只有delete
你new
的内容。您没有在任何地方使用new
,无论是直接还是间接使用,因此无需删除任何内容。正如Xeo所说,更好的解决方案是使用std::wstring
。
答案 2 :(得分:0)
答案 3 :(得分:0)
您自己没有分配任何内存。如果您的代码中没有任何新的[],则不需要删除[]。