我正在尝试编译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的相同值...所以它必须是编译器的错误。有什么方法可以解决这个问题吗?