2013-03-08 133 views
0

我試圖使用mbstowcs_s函數將多字節字符序列轉換爲相應的寬字符序列。但我一直有以下堆腐敗問題。誰能告訴我如何解決這個問題?將字符轉換爲寬字符

enter image description here

這裏是一個示例代碼。調試時,始終是導致問題的行delete wc_name。我知道這不應該是。

#include <Windows.h> 
#include <iostream> 
#include <string> 
int main (int argc, char *argv[]) { 
    size_t returnValue; // The number of characters converted. 
    const size_t sizeInWords = 50; // The size of the wcstr buffer in words 
    const char* c_name = "nanana"; // The address of a sequence of characters 
    wchar_t *wc_name = new wchar_t(50); 

    errno_t err = mbstowcs_s(&returnValue, wc_name, sizeInWords, 
               c_name, strlen(c_name)); 

    wcout << wc_name << endl; 
    delete wc_name; 
    return 0; 
} 

回答

5

wchar_t *wc_name = new wchar_t(50);wchar_t *wc_name = new wchar_t[50];分配陣列。和相應的delete wc_name應該是delete[] wc_name;。順便說一句,如果你知道編譯時本身的數組大小,就不需要動態內存分配。你可以簡單地做wchar_t wc_name[50];