没有正确传递参数

时间:2013-05-26 08:40:11

标签: c++ visual-c++

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

0 个答案:

没有答案