他の人が同様の質問を書いていることは知っていますが、解決策が見つからないため、私は別のケースだと思います。Cで参照が割り当てられているときに不思議な呼び出しが追加される
私はこのような非常にシンプルなもの、オブジェクトの割り当てを持っている:ちょうど何が起こっているか理解するために、
_buffer3 = buffer; //they are just simple reference types
アセンブリコード生成は、現在、以下の
mov edx,dword ptr [ebp-3Ch]
mov eax,dword ptr [ebp-40h]
lea edx,[edx+4]
call 69C322F0
である私がしたかったです、コール内の一歩(なぜ割り当て内でコールを使用する必要がありますか)。しかし、そのアドレスのコードが存在していないと私はステップすることはできません 私はアドレスコード欄にアドレスを入力した場合、それが示されているものです:。
69C322F0 ???
この謎を解決しようとして任意のヘルプ? :)
編集。クラスのメソッド内で参照が割り当てられていると、不思議な呼び出しが追加されるようです。
私は、このクラスを使用している場合:
private class Test
{
int _X;
int _Y;
Test _t;
public void SetValues(int x, int y, Test t)
{
_X = x;
_Y = y;
}
}
アセンブリは、メソッドSetValues用に生成は次のとおりです。私はこの
private class Test
{
int _X;
int _Y;
Test _t;
public void SetValues(int x, int y, Test t)
{
_X = x;
_Y = y;
_t = t;
}
}
を書く場合は意味
を作る
_X = x;
00000028 mov eax,dword ptr [ebp-3Ch]
0000002b mov edx,dword ptr [ebp-40h]
0000002e mov dword ptr [eax+8],edx
_Y = y;
00000031 mov eax,dword ptr [ebp-3Ch]
00000034 mov edx,dword ptr [ebp+0Ch]
00000037 mov dword ptr [eax+0Ch],edx
神秘的な呼び出しは、ガベージコレクションに関連する何か私見
_X = x;
00000028 mov eax,dword ptr [ebp-3Ch]
0000002b mov edx,dword ptr [ebp-40h]
0000002e mov dword ptr [eax+8],edx
_Y = y;
00000031 mov eax,dword ptr [ebp-3Ch]
00000034 mov edx,dword ptr [ebp+0Ch]
00000037 mov dword ptr [eax+0Ch],edx
_t = t;
0000003a mov edx,dword ptr [ebp-3Ch]
0000003d mov eax,dword ptr [ebp+8]
00000040 lea edx,[edx+4]
00000043 call 515E2E48
を表示されますが、私はそれが何であるかを理解できないと私は本当にそれを把握したいと思います。私はこのAについての麺ます
hmmいいえ、実際には無効にしています。私はそれを試してみます! – sebas
@AlexD、プロジェクトプロパティ([デバッグ]タブ)で[管理されていないコードのデバッグを有効にする]をチェックしましたか? –
[この質問]の複製である場合があります(http://stackoverflow.com/questions/57840/how-to-attach-debugger-to-step-into-native-c-code-from-a-managed-c -wrappe) –