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;