У меня есть некоторый код, который создает динамически выделяемый массив сПочему мой динамически выделенный массив получает инициализацию до 0?
int *Array = new int[size];
Из того, что я понимаю, массив должен быть указателем на первый элемент массива в памяти. При использовании gdb я могу вызвать x Array для проверки значения в первой ячейке памяти, x Array + 1, чтобы исследовать вторую и т. Д. Я ожидаю, что значения нежелательных эффектов остались бы от любого приложения, использующего эти пятна в памяти до моего , Однако использование x Array возвращает 0x00000000 для всех этих мест. Что я делаю не так? Мой код инициализирует все значения массива до нуля?
EDIT: Для записи я прошу, потому что моя программа является попыткой реализовать это: http://eli.thegreenplace.net/2008/08/23/initializing-an-array-in-constant-time/. Я хочу удостовериться, что мой алгоритм не увеличивается с помощью массива, чтобы инициализировать каждый элемент до 0.
Вы не можете положиться на это поведение, это UB! –
Вы можете написать 'int * Array = new int [size]();' (обратите внимание на пустую скользящую скобку), если вы хотите, чтобы эти нули были гарантированы. – fredoverflow