问题描述
我遇到的问题是我不允许使用任何堆分配。我有一个函数需要返回一个指向抽象类的指针。
示例:
class Base
{
public:
virtual Base* func() = 0;
};
class Foo : public Base
{
Base* func() override
{
// return new Foo{}; // usual approach with heap allocation
// Foo result{}; // undefined behavIoUr.
// return &result;
}
};
这个例子可能有点过于简化,但它显示了问题。如何在没有堆分配的情况下实现 Foo::func?
解决方法
也许这对您来说是一个选择:您可以将要创建新 import pyodbc
对象的内存地址传递给函数,然后使用位置 Foo
创建对象。
然后,这个内存可以在堆栈上,避免堆分配。当然,您也可以传递以前堆分配的内存,这仍然可以避免在 new
中的创建点分配。
见下文:
Foo::func