释放向量的wchar_t *

时间:2011-03-29 13:26:26

标签: c++ vector wchar-t memory-management

我有一个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

为什么呢?我该如何解决这个问题?

4 个答案:

答案 0 :(得分:4)

使用此myfunction(L"this is my string");,您不会创建新字符串。它是一个存储在exe中某个地方的常量字符串。由于您没有明确new它,因此您也不需要delete 仅成对使用new and deletenew[] and delete[]

答案 1 :(得分:1)

只有deletenew的内容。您没有在任何地方使用new,无论是直接还是间接使用,因此无需删除任何内容。正如Xeo所说,更好的解决方案是使用std::wstring

答案 2 :(得分:0)

答案 3 :(得分:0)

您自己没有分配任何内存。如果您的代码中没有任何新的[],则不需要删除[]。