我對C++中的堆有一個小的理解問題。我創建了一個小類來將Wchar_t數組轉換爲Char數組。這裏是我的轉換類的一部分:理解堆的問題
.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-文件I動態在堆中創建一個新的字符數組。 如何正確刪除變量?我看了很多的不同,例子...
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())'。 –
現在我就像你說的那樣做,它運作得非常好。謝謝。有了這個解決方案,我也可以修復我的內存泄漏問題。感謝大家! – hofmeister