回答編集履歴
1
問題のある部分を追記
test
CHANGED
@@ -52,8 +52,6 @@
|
|
52
52
|
|
53
53
|
そうですね、気がついたものとしては
|
54
54
|
|
55
|
-
|
56
|
-
|
57
55
|
* `HANDLE file`や`LPWSTR lpszbuf`がグローバル変数である必然性が無い。
|
58
56
|
|
59
57
|
* `LPTSTR`(TCHAR配列のポインター)と`LPWSTR`(WCHAR/wchar_t配列のポインター)の意識が混在している。※`TCHAR`はマルチバイト(_MBCS)とUNICODE(_UNICODE)の双方で同じコードで書くためのものです。
|
@@ -64,14 +62,16 @@
|
|
64
62
|
|
65
63
|
|
66
64
|
|
67
|
-
あと、
|
65
|
+
あと、問題がある部分としては
|
68
66
|
|
69
67
|
* `GlobalAlloc`で取得したhMemoryが`NULL`であった場合でも、処理を続行している。
|
70
68
|
|
71
69
|
* `ReadFile`実行後、`lpszbuf[accbytes] = '\0';` でNULL文字を埋め込んでいるが、`lpszbuf`は`wchar_t`型のポインターなので、実際に読み込んだバイト長 * 2 の位置に`'\0'`を挿入してしまっている。(メモリを破壊している) また、`L'\0'` との表記の方がより適切。
|
72
70
|
|
71
|
+
* `cout`を使う部分ですが、`cout` では`L`で指定したワイド文字列(UNICODE)は出力できないです。`wcout` を使う必要があります。
|
72
|
+
|
73
73
|
|
74
74
|
|
75
75
|
---
|
76
76
|
|
77
|
-
|
77
|
+
です。
|