【发布时间】:2011-10-22 23:14:46
【问题描述】:
我对 c++ 中的堆有一点理解问题。
我创建了一个小类来将 Wchar_t-Array 转换为 Char-Array。这是我的转换类的一部分:
.h
class ConvertDataType
{
private:
char *newChar;
};
.cpp
size_t i;
char *newChar = new char[wcslen(WcharArray)];
wcstombs_s(&i, newChar, strlen(newChar), WcharArray, wcslen(WcharArray));
return newChar;
在 Cpp 文件中,我在堆中动态创建了一个新的字符数组。 如何正确删除变量?我读了很多不同的例子……
delete[] newChar;
在for循环中:
delete[] newChar[i];
我会这样做:
~ConvertDataType(void) //deconstructor
{
delete[] newChar;
}
正确吗? newChar[i] 中的内容会发生什么情况?我只是销毁指针,不是吗?
好吧,如果我使用该类,我仍然有问题,发生内存泄漏?
怎么可能?我添加到我的解构器delete[] newChar;。
【问题讨论】:
-
更好的是使用
std::string和std::wstring。要将后者转换为前者,请执行std::string s(ws.begin(), ws.end())。 -
现在我像你说的那样做,效果很好。谢谢你。有了这个解决方案,我还可以解决我的内存泄漏问题。谢谢大家!
标签: c++ arrays memory-management heap-memory