使用placement new语法,我应该能够做到这样的事情:
char *buffer = new char[sizeof(MyClass)]; //pre-allocated buffer
MyClass *my_class = new (buffer) MyClass; //put da class there
Run Code Online (Sandbox Code Playgroud)
现在假设我只做第一行,但不是第二行.是否有一种方法可以在代码中确定缓冲区是否已正确分配,但是尚未在那里实例化MyClass类型的对象?
原始代码:
char *buffer = new char[sizeof(MyClass)]; //pre-allocated buffer
MyClass *my_class = new (buffer) MyClass; //put da class there
Run Code Online (Sandbox Code Playgroud)
为了动态确定是否已执行放置,new有关它的信息必须存储在某处。该语言不提供该服务。所以你必须自己做,通过两种可能的主要方式之一:
()在表达式末尾添加即可new。否则无法保证缓冲区内容看起来不像对象。两个子案例:
bool变量。