当使用具有可变大小结构(必须分配为byte[],然后转换为struct的结构)的各种API时,如果unique_ptr holder可以指向该结构,那么将会很好,因为这就是我们将要使用的内容。
示例:
std::unique_ptr<VARIABLE_SIZE_STRUCT[]> v;
v.reset(reinterpret_cast<VARIABLE_SIZE_STRUCT*>(new BYTE[bytesRequired]));
这使得`v能够为结构本身提供视图,这是首选的,因为我们不需要第二个变量,并且除了删除之外,我们不关心字节指针。
问题出在可能在转换时对指针进行thunking(使其无法安全释放)。我看不到编译器在转换时更改指针值的合理原因(因为没有继承),但我听说标准保留了在任何转换中thunk任何指针的权利,因此就符合标准的编码而言,这种方法已经没有用了,对吗?或者说它是否有安全性的理由?有没有办法至少进行静态断言,或者其他方式使其安全或干净地处理这种类型的结构?
reinterpret_cast
是否会实际改变指针的值:https://dev59.com/HHA75IYBdhLWcg3wbojM - John Zwinck