0

我正在開發憑證提供程序和憑證。所以我有這個類SampleProviderSampleCredential。它運作良好時,我特別聲明SampleProvider有一個或兩個,或SampleCredential一個常數,通過聲明:憑證陣列

SampleCredential * _pCredential[2] 

但現在,我希望它是動態分配的。所以我有這樣的:

SampleCredential * *_pCredential 

,然後方法SetUsageScenario(),代碼將讀取一個txt文件憑證的數量,併爲它分配:

(*_pCredential) = new SampleCredential[numberCount]; 

但它無法正常工作。我一直在這條線上發生錯誤。它說

訪問衝突寫入位置0x00000000;

你知道這裏發生了什麼,該怎麼辦?

回答

0

_pCredential可能尚未初始化,仍爲NULL。試圖通過「(* _pCredential)」取消引用空指針會導致您的訪問衝突。

也許你打算這樣做?

_pCredential = new SampleCredential*[numberCount]; 

這將分配一個指向SampleCredential對象的指針數組。然後,您可以分配每個SampleCredential對象是這樣的:

_pCredential[0] = new SampleCredential(); 
// etc. 

記得釋放內存時,即可大功告成:

for (int i = 0; i < numberCount; i++) { 
    delete _pCredential[i]; 
} 
delete [] _pCredential;