Я изучаю C++, и я знаю, что «новое» ключевое слово используется для выделения адреса в памяти указателю. И я думаю, что при использовании 'nullptr' инициализирует указатель, который указывает на ничего. Это верно? Пример для справки:C++: Разница между установкой указателя на nullptr и инициализацией его как новой переменной типа
//using nullptr
int *x = nullptr; //this is just a pointer that points to nothing and
//will need to be initialized with an address before it
//it can be used. Correct?
//using new
int *x = new int; //this is basically giving x an address in memory. Will the
//address have some residual value stored in it or will
//it contain zero?
Когда вы будете использовать один над другим? Является ли новое, используемое только для динамического распределения памяти, или для него существуют другие приложения? Зачем вам инициализировать указатель на nullptr, если вы можете просто объявить его, а затем инициализировать его позже?
Спасибо за помощь!
Первый не будет UB. 'x' будет просто указывать на неинициализированное значение. Использование этого неинициализированного значения будет UB. –
Спасибо. Очистка формулировки. – user4581301
Педантичность: чтение '* x' - неопределенное поведение. Чтение 'x' в порядке (хотя для значения необработанного указателя мало пользы). – ShadowRanger