Ошибка BAD_ACCESS при попытке установить значение логического массива уникальных указателей - PullRequest
0 голосов
/ 28 августа 2018

Я не уверен, является ли это проблемой синтаксиса, но я попытался возиться с объявлениями и не могу избавиться от ошибки. Вот мои личные переменные-члены в заголовочном файле.

   class PrimeGenerator

{
   private:

          unique_ptr<bool[]> sequence;

          int length;

Эти объявления вызвали ошибку BAD_ALLOCATION. Мой синтаксис неверен? Как мне объявить членов массива unique_ptr?

sequence[0] = 0;
sequence[1] = 0;
sequence[2] = 1;

1 Ответ

0 голосов
/ 28 августа 2018

Похоже, что в вашем коде unique_ptr<bool[]> sequence; нет значения, на которое можно указать.

unique_ptr<bool[]> sequence{new bool[3]};

Вы можете попробовать с приведенным выше кодом. Также, как уже упоминалось, умный указатель - это класс, который оборачивает «необработанный» (или «голый») указатель C ++ для управления временем жизни объекта, на который указывает указатель. С необработанными указателями программист должен явно уничтожить объект, когда он больше не нужен. Интеллектуальный указатель для сравнения определяет политику, когда объект уничтожается. Вам все еще нужно создать объект, но вам больше не нужно беспокоиться об его уничтожении.

...