1

我目前正在使用 c++ 开发一些简单的自定义分配器,这些分配器通常可以正常工作。我还重载了 new/delete 运算符以从我自己的分配器中分配内存。无论如何,我遇到了一些我真的不知道内存来自哪里的场景,如下所示:

    void myFunc(){
          myObj testObj();
          ....do something with it
    }

在这种情况下,testObj 只会在函数内部有效,但它的内存从何而来?无论如何我可以将它链接到我的分配器吗?我是否必须使用 new 和 delete 创建对象,还是有其他方法?

谢谢

4

1 回答 1

4

myObj testObj();声明一个名为的函数,该函数testObj返回一个myObj.myObj testObj;改为使用。)

内存来自堆栈。离开作用域时,它将被auto-matically 销毁。


要使用你的newanddelete你当然必须调用newand delete

myObj* p_testObj = new myObj;
...
delete p_testObj;

但是堆栈分配是最有效的,因为它只涉及 1 条指令sub esp, ??。我看不到使用自定义分配的理由,除非myObj是巨大的。

于 2010-04-04T20:18:15.103 回答