0

Я разрабатываю поставщик учетных данных и учетные данные. Поэтому у меня есть этот класс SampleProvider и SampleCredential. Он хорошо работает, когда я конкретно заявить, что SampleProvider имеет один, или два, или постоянное число SampleCredential, объявляя:Массив учетных данных

SampleCredential * _pCredential[2] 

Но теперь, я хочу, чтобы динамически распределять. Так что я буду иметь это:

SampleCredential * *_pCredential 

, а затем внутри метода SetUsageScenario(), код будет считывать количество учетных данных из текстового файла, и передать его:

(*_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; 
Смежные вопросы