Динамическое распределение памяти - инициализация по умолчанию примитивных типов в c ++

17

Если я выделяю массив некоторого примитивного типа, например.

double *v = new double[10];

Мне нужно знать, каков будет исходное значение записей массива.

Он указан в стандартном или зависимом от компилятора и где я могу его найти.

Спасибо, Johannes

    
задан Johannes Gerer 30.05.2011 в 14:03
источник

1 ответ

28

Нет, содержимое массива не инициализируется. Вы должны использовать double *v = new double[10](); , чтобы иметь значение по умолчанию 0 для каждого элемента (Notice () ).

    
ответ дан Naveen 30.05.2011 в 14:05
источник
  • Ты прав, моя ошибка. Проект стандарта, пункт 5.3.4.15. –  Fred Foo 30.05.2011 в 14:07
  • Что совершенно не очевидно и, скорее всего, пройдет незаметно в обзорах кода ...: / –  Matthieu M. 30.05.2011 в 14:17
  • @Matthieu: Очень верно. Даже Навей подозревал это, поэтому он написал «Уведомление» (). ха-ха –  Nawaz 30.05.2011 в 14:40
  • OTOH, когда человеческие глаза проверяют ошибки, обнаруженные с помощью инструмента, не являются тем, о чем должны знать обзоры кода. –  David Hammen 30.05.2011 в 15:05
  • @Nawaz, есть ли ссылка на ()? –  compile-fan 30.05.2011 в 15:05