C ++:在函数中分配内存

时间:2014-11-15 12:43:21

标签: c++ pointers

我想为函数中的对象分配内存。但是,它不起作用。这是代码:

class MyClass { ... };
void foo(MyClass *mc) { mc = new MyClass; }

int main() {
    MyClass *mc;
    foo(mc);
    if (mc == NULL)
        std::cout << "Faile" << std::endl;
}

我不擅长指针。谁能给我一个关于我的错误的解释?谢谢!

1 个答案:

答案 0 :(得分:3)

如果你真的想让你的东西工作,你可以使用对指针的引用进行编码:

void foo(MyClass *&mc) { mc = new MyClass; }

但这太荒谬了。只需返回指针:

MyClass* foo () { return new MyClass; }

实际上,你很少需要做这些事情。使用smart pointers,请参阅here

你肯定需要阅读更多关于C ++的内容(例如Stroustrup的Programming : Principles & Practice using C++&amp; C++ Programming Language (4th edition)等...),你应该使用现代C++11实现(例如4.9版)或更好的GCC)。阅读RAIISFINAERule of Three / Rule of Five ...