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 にあることを期待します...したがって、コンパイラのバグである必要があります。これを修正する方法はありますか?