Mai*_*igo 3 c++ initialization undefined new-operator placement
我最近遇到了一个相当有趣的序列化方法,利用未初始化变量的透明度(编译器中的常见未定义行为?)进行"高效"反序列化.
分配存储器并分配预定值.然后使用Placement new来实例化一个结构(例如一个复杂的就地数据结构),将未初始化的变量"初始化"为底层内存的值.(见下面的代码)
除了相当危险,可能不是一个非常令人愉快的编码约定...我只是想知道是否有人遇到过这种方法或更重要的是 - 它叫什么?
class SomeClass {
public:
SomeClass() {}
int someInt;
};
int main(...) {
int dummy = 42;
int *pSomeClass = new (&dummy) SomeClass();
cout << pSomeClass->someInt << endl;
}
Run Code Online (Sandbox Code Playgroud)
这将打印出数字42 ... neato!
| 归档时间: |
|
| 查看次数: |
614 次 |
| 最近记录: |