C++ 取消分配向量的wchar\u t*
我有一个wchar\u t*向量,如下所示:C++ 取消分配向量的wchar\u t*,c++,vector,wchar-t,memory-management,C++,Vector,Wchar T,Memory Management,我有一个wchar\u t*向量,如下所示: std::vector<wchar_t*> myvector; 当我关闭程序时,我需要删除向量的分配内存,这样我就不会有内存泄漏,为此,我正在尝试这样做: for (std::vector<wchar_t*>::iterator it = myvector.begin(); it != myvector.end(); ++it) { delete [] *it; } for(std::vector::iterato
std::vector<wchar_t*> myvector;
当我关闭程序时,我需要删除向量的分配内存,这样我就不会有内存泄漏,为此,我正在尝试这样做:
for (std::vector<wchar_t*>::iterator it = myvector.begin(); it != myvector.end(); ++it)
{
delete [] *it;
}
for(std::vector::iterator it=myvector.begin();it!=myvector.end();+it)
{
删除[]*它;
}
它可以编译,一切正常,但当需要释放内存时,我遇到了一个常规错误:
为什么??如何修复此问题?使用此myfunction(L“这是我的字符串”)代码>不创建新字符串。它是一个常量字符串,存储在exe中的某个位置。由于您没有显式地新建它,因此也不需要删除它。
只能成对使用new和delete
和new[]和delete[]
使用这个myfunction(L“这是我的字符串”)代码>不创建新字符串。它是一个常量字符串,存储在exe中的某个位置。由于您没有显式地新建它,因此也不需要删除它。
只能成对使用new和delete
和new[]和delete[]
仅删除您的新内容。您没有在任何地方直接或间接使用new
,因此无需删除任何内容。正如Xeo所说,更好的解决方案是只使用std::wstring
删除您的新内容。您没有在任何地方直接或间接使用new
,因此无需删除任何内容。正如Xeo所说,更好的解决方案是使用std::wstring
您自己没有分配任何内存。如果您的代码中没有任何新的[],您也不需要任何删除[]。您自己没有分配任何内存。如果您的代码中没有任何新的[],您也不需要删除[]。您应该使用std::wstring
来避免遇到此类问题。您应该使用std::wstring
来避免遇到此类问题。
for (std::vector<wchar_t*>::iterator it = myvector.begin(); it != myvector.end(); ++it)
{
delete [] *it;
}