应用程序在VS2008中的strncpy崩溃

时间:2011-05-02 21:00:07

标签: visual-studio-2008

我在下面的代码中遇到了strncpy的访问冲突。

if(WaitForSingleObject(RdStatShared.hMutex, INFINITE) == WAIT_OBJECT_0)
{
    if(RdStatShared.Resp.itemLength != NULL)
    {                   
        strncpy((char*)TData[53], (char*)RdStatShared.Resp.itemLength, (size_t)0x01);
    }
    ReleaseMutex(RdStatShared.hMutex);
}

RdStatShared是跨项目使用的共享对象。由于它是随机更新的,我想在读取之前锁定对象。 TData是长度为1024的BYTE类型,itemLength是UCHAR。

在调试代码时,在汇编代码中,我看到将源字符串复制到临时缓冲区时会产生访问冲突。 任何人都可以告诉为什么在strncpy发生访问冲突吗?

感谢任何有用的信息。

拉​​克希米。

1 个答案:

答案 0 :(得分:2)

strncpy的第二个参数是要复制到的位置,您似乎正在传递RdStatShared.Resp.itemLength,这听起来像是某种东西的大小,而不是之类的指向字符缓冲区的指针。如果你想解释它,那么你可能需要传递指针,而不是事物本身;即,(char*) &(RdStatShared.Resp.itemLength)