如果我在C++中有如下这样的代码,该代码在C语言中是合法的:
int* i = static_cast<int*>(std::malloc(sizeof(int)));
*i = 123;
这段代码在C++中是否也是合法的?是否会引发未定义或实现定义的行为?对于何种类型的数据而言,它是合法的?
或者在这种情况下,是否必须使用 new(i) int(123);
?
对于非平凡类(non-trivial classes)来说,这样做可能并不合法,因为对象从未被构造过,但却调用了其 operator=
操作符。