0x6ececafa在0xC0000005中的未处理异常:访问冲突写入位置0x00000000

时间:2016-01-13 05:54:51

标签: c++

在以下代码中获取异常。

HRESULT GetRemovableDrive(
    __out   LPDWORD   lpdwRemovableDriveCount,
    __out   CHAR*     szRemovableDrive )
{
    INT     iDriveCnt                   = 0;
    CHAR   TempDrive[ MAX_PATH ]       = { TEXT('\0') };

hResult = CheckDriveReady( tzDriveName, &bIsDeviceReady );
                    if ( !hResult && TRUE == bIsDeviceReady )
                    {
                        //
                        // Copy drive name
                        //
                        strcpy_s ( TempDrive, tzDriveName );
                        memcpy(szRemovableDrive + iDriveCnt, TempDrive, 1);
                        iDriveCnt++;
                        ( *lpdwRemovableDriveCount )++;
                    } // if
}

在执行memcpy时获取异常作为未处理的异常:访问冲突写入位置0x00000000。

1 个答案:

答案 0 :(得分:2)

信息很清楚。您在致电memcpy()时正在写入地址0。这意味着szRemovableDriveiDriveCnt都是0,因为它是写目标地址。调用者可能会为该参数传递一个NULL指针GetRemoveableDrive()