Yuc*_*ong 0 c++ windows char wchar
我试图使用该mbstowcs_s函数将一系列多字节字符转换为相应的宽字符序列.但我一直遇到以下堆损坏问题.谁能告诉我如何解决这个问题?

这是一个示例代码.调试时,始终是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;
}
Run Code Online (Sandbox Code Playgroud)
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];.