Как я могу сделать 'новым []' значение по умолчанию - инициализируют массив типов примитивов?

Время от времени я должен звонить new[] для встроенных типов (обычно char). Результатом является массив с неинициализированными значениями, и я должен использовать memset() или std::fill() инициализировать элементы.

Как я делаю new[] значение по умолчанию - инициализирует элементы?

23
задан sharptooth 18 March 2010 в 07:47
поделиться

2 ответа

int * p = new int [10] () должно работать.

Однако, как указывает Майкл , было бы лучше использовать std :: vector .

32
ответ дан 29 November 2019 в 01:18
поделиться

Почему бы вам просто не использовать std::vector? Он сделает это за вас автоматически.

std::vector<int> x(100); // 100 ints with value 0
std::vector<int> y(100,5); // 100 ints with value 5

Также важно отметить, что использование векторов лучше, так как данные будут надежно уничтожены. Если у вас есть оператор new[], и впоследствии возникнет исключение, то выделенные данные будут утекать. Если вы используете std::vector, то будет вызван деструктор вектора, в результате чего данные будут правильно деаллоцированы.

23
ответ дан 29 November 2019 в 01:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: