0

我正在开发凭据提供程序和凭据。所以我有这门课SampleProviderSampleCredential. 当我通过以下方式特别声明SampleProvider具有一个、两个或一个常数的时SampleCredential,它运行良好:

SampleCredential * _pCredential[2]

但现在,我希望它是动态分配的。所以我会有这个:

SampleCredential * *_pCredential

然后在方法内部SetUsageScenario(),代码将从 txt 文件中读取凭证的数量,并分配它:

(*_pCredential) = new SampleCredential[numberCount];

但它不起作用。我一直在那条线上出错。它说

访问冲突写入位置 0x00000000 ;

你知道这里会发生什么以及该怎么做吗?

4

1 回答 1

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;
于 2011-07-05T13:53:49.940 回答