在以下代码中获取异常。
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。
答案 0 :(得分:2)
信息很清楚。您在致电memcpy()
时正在写入地址0。这意味着szRemovableDrive
和iDriveCnt
都是0,因为它是写目标地址。调用者可能会为该参数传递一个NULL指针GetRemoveableDrive()
。