c ++对指针的引用

Geo*_*sen 2 c++ crash gdi+ pointers reference

我有以下伪代码:

function1()//Gets called on startup
{
    myclass* obj;
    function2(obj);
    obj->doSomething();//crashes here!
}

function2(myclass*& ret)
{
    myclass* nobj = &myclass();
    nobj->doSomething();//Does not crash
    ret = &nobj;
}
Run Code Online (Sandbox Code Playgroud)

看起来即使我设置ret指向nobj,当我尝试操作obj(应该指向nobj,因为ret是对obj的引用)时,我的程序崩溃了!显然,我做错了什么,有谁知道它是什么?

Set*_*gie 7

你正在做一个临时的地址&myclass(),这是一个禁忌,因为临时在表达式的末尾被销毁,你的编译器不应该允许它.

虽然您的编译器已经在该区域中不一致,但您将继续使用被破坏的对象,这是未定义的行为,这也是您的代码崩溃的原因.

此外,我不知道你是如何分配的指针,一个指向myclass(&nobj到)的指针myclass(ret).它不应该编译.