微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在方法中返回向上转换的指针时替代堆分配

如何解决在方法中返回向上转换的指针时替代堆分配

我遇到的问题是我不允许使用任何堆分配。我有一个函数需要返回一个指向抽象类的指针。

示例:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。