私はコードを書いていますが、そのかなりの部分で wchar 配列を返す必要があります。wstringを返すことは実際にはオプションではありません(使用できますが)。ポインターを引数として渡して入力できることはわかっていますが、特にこのワイド文字の配列へのポインターを返すことを検討しています。最初の数回の繰り返しで、配列を問題なく返すことがわかりましたが、それらが処理されて印刷されるまでに、メモリが上書きされ、意味不明なままになります。これを修正するために、すべてを修正した wcsdup の使用を開始しましたが、何が起こっているのかを正確に把握するのに苦労しています。現状では、文字列を返すたびに wcsdup を使用し、文字列が返されるたびに、メモリ リークが発生することがわかっています。これが私がやっていることです。
wchar_t *intToWChar(int toConvert, int base)
{
wchar_t converted[12];
/* Conversion happens... */
return converted;
}
wchar_t *intToHexWChar(int toConvert)
{
/* Largest int is 8 hex digits, plus "0x", plus /0 is 11 characters. */
wchar_t converted[11];
/* Prefix with "0x" for hex string. */
converted[0] = L'0';
converted[1] = L'x';
/* Populate the rest of converted with the number in hex. */
wchar_t *hexString = intToWChar(toConvert, 16);
wcscpy((converted + 2), hexString);
return converted;
}
int main()
{
wchar_t *hexConversion = intToHexWChar(12345);
/* Other code. */
/* Without wcsdup calls, this spits out gibberish. */
wcout << "12345 in Hex is " << hexConversion << endl;
}