Присвоение неинициализированной памяти в C++ ⇐ C++
Присвоение неинициализированной памяти в C++
Если бы у меня был такой код, это было бы допустимо в C:
int* i = static_cast(std::malloc(sizeof(int))); *я = 123; Это также легально для C++ или будет вызывать неопределенное/определенное реализацией поведение? И для каких типов это будет законно?
Или в этом случае нужно будет уже сделать new(i) int (123);?
Например, для нетривиальных классов это недопустимо, поскольку объект никогда не создается, а затем вызывается его operator=.
Если бы у меня был такой код, это было бы допустимо в C:
int* i = static_cast(std::malloc(sizeof(int))); *я = 123; Это также легально для C++ или будет вызывать неопределенное/определенное реализацией поведение? И для каких типов это будет законно?
Или в этом случае нужно будет уже сделать new(i) int (123);?
Например, для нетривиальных классов это недопустимо, поскольку объект никогда не создается, а затем вызывается его operator=.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как компиляторы C обрабатывают использование неинициализированной переменной?
Anonymous » » в форуме C++ - 0 Ответы
- 34 Просмотры
-
Последнее сообщение Anonymous
-