回答編集履歴

1

問題のある部分を追記

2018/05/30 15:59

投稿

dodox86
dodox86

スコア9183

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
+