我有一個成員變量指向一個wchar_t數組,該數組將保存用戶通過控制檯給出的輸入。訪問衝突用動態數組寫入位置
wchar_t ** mArray;
然後,在我的成員函數中,我要求來自用戶的輸入並將其存儲在std :: wstring中。之後,我使用這個wstring的長度爲mArray
動態分配內存,併爲for循環分配每個字符。但是,我收到「訪問衝突寫入位置」錯誤。
std::wstring givenWstring;
std::cin.ignore();
std::getline(std::wcin, givenWstring);
mArray = new wchar_t*[givenWstring.length()];
for (size_t i = 0; i < givenWstring.length(); i++) {
*mArray[i] = givenWstring.at(i);
}
我不知道,因爲我是在動態數組中指定從wstring的每個字符各指標爲什麼我收到訪問衝突錯誤。
也許'wchar_t * mArray;'是你需要的嗎?然後簡單地'mArray = new wchar_t [givenWstring.length()];''和'mArray [i] = givenWstring.at(i);'。 – DimChtz
你的數組包含**未初始化的**'givenWstring.length()'**指針**到'wchar_t'。當你嘗試解除引用指針('* mArray [i]')時,你會得到未定義的行爲。 –
@DimChtz,對不起。你是否建議我改用wchar_t *? – Skipher