сбой приложения в strncpy в VS2008 - PullRequest
0 голосов
/ 03 мая 2011

Я получаю нарушение доступа по адресу 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 - это тип BYTE длиной 1024, а itemLength - это UCHAR.

При отладке кода, в коде сборки я вижу, что при копировании исходной строки во временный буфер возникает нарушение доступа.Кто-нибудь может сказать, почему нарушение прав доступа произошло в strncpy?

Спасибо за любую полезную информацию.

Лакшми.

1 Ответ

2 голосов
/ 03 мая 2011

Второй аргумент strncpy - это место для копирования, и вы, похоже, передаете RdStatShared.Resp.itemLength, который звучит подозрительно как размер чего-то, а не как указатель на символ буфер. Если вы хотите интерпретировать его как таковой, то вам, вероятно, нужно передать на него указатель, а не саму вещь; то есть (char*) &(RdStatShared.Resp.itemLength).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...