質問編集履歴
1
一応結果が上手くいく補足コードを追加しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -24,9 +24,27 @@
|
|
24
24
|
```
|
25
25
|
実行時、`max_length`をキャプチャした所、Debugモードでは`4`を示し、Releaseモードでは意図しない値(例えば`5488576`など)が観測されました。
|
26
26
|
|
27
|
+
- 補足
|
28
|
+
一度変数に代入するという回避策を頂きました。
|
29
|
+
例えば以下のような感じです。
|
30
|
+
|
31
|
+
```cpp
|
32
|
+
CString str(_T("hoge"));
|
33
|
+
CString str2(_T("dog"));
|
34
|
+
CString str3(_T("be"));
|
35
|
+
int size1 = str.GetLength();
|
36
|
+
int size2 = str2.GetLength();
|
37
|
+
int size3 = str3.GetLength();
|
38
|
+
|
39
|
+
int max_length = GetMax(size1, size2, size3); //4が入る
|
40
|
+
```
|
41
|
+
これだと確かにコンパイルは通り、実行結果も上手く行きます。
|
42
|
+
しかし、**何故直接では駄目で一度変数に逃がす必要がある**のかわからないので、依然として納得できません。
|
43
|
+
|
27
44
|
### 疑問
|
28
45
|
- まず何故このような結果になってしまうのか。
|
29
46
|
- Debugモード / Releaseモードで挙動が違う?検討が付きません。
|
47
|
+
- 補足コードのようにすると実行結果は上手くいくが、何故直接`GetLength()`からでは駄目なのか
|
30
48
|
|
31
49
|
### 補足情報
|
32
50
|
- Windows 7 Pro SP1 64bit
|