Присвоение неинициализированной памяти в C++ ⇐ C++
-
Anonymous
Присвоение неинициализированной памяти в 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=.
Мобильная версия