1

64 ビットの実行可能ファイルをコンパイルしようとしていますが、デバッグするたびに値が正しく渡されていないことがわかります。

char buf[1024];
nret = recv(sock, buf, 1024, 0);

if( nret == 0 ) 
    break;

SOCKET s = sock;
char *ptr = buf;
int len = nret;
HandleReceive(s, ptr, len);

handlereceives スタックでは、ptr が不適切なポインターであり、すべての値が完全にめちゃくちゃになっていると言っています。関数が呼び出される前の状態ではありません。これを修正するにはどうすればよいですか?

はい、Visual Studio のデバッガーを使用しています。ptr に 0x1000 の設定値を渡そうとしたことさえあります。この値も取得しません。

私はデバッグとしてコンパイルしています。

関数は非常に長いですが、以下にその内容を示します。

void HandleReceive(SOCKET sock, char *buf, int len)
{
    using namespace Socket;

    if( _internal_safecmp(buf, HELLO, strlen(HELLO)) )
    {
        echo("hello");

    }   
}

コードをデバッグしましたが、問題は値に正しくアクセスしていないことです。

rcx で値を渡しますが、渡された同じ値が r10 にあることを期待します...したがって、コンパイラのバグである必要があります。これを修正する方法はありますか?

4

0 に答える 0