2016-01-13 127 views
-1

在以下代碼中獲取異常。0xC0000005中的0x6ececafa未處理的異常:訪問衝突寫入位置0x00000000

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

'szRemovableDrive'肯定是NULL,沒有其他的東西是可能的 –

回答

2

消息很清楚。您致電memcpy()致電地址0。這意味着szRemovableDriveiDriveCnt都是0,因爲這是寫入目標地址。調用者可能會傳遞一個NULL指針到該參數的GetRemoveableDrive()

相關問題