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的引用)时,我的程序崩溃了!显然,我做错了什么,有谁知道它是什么?
你正在做一个临时的地址&myclass(),这是一个禁忌,因为临时在表达式的末尾被销毁,你的编译器不应该允许它.
虽然您的编译器已经在该区域中不一致,但您将继续使用被破坏的对象,这是未定义的行为,这也是您的代码崩溃的原因.
此外,我不知道你是如何分配的指针,一个指向myclass(&nobj到)的指针myclass(ret).它不应该编译.
| 归档时间: |
|
| 查看次数: |
3357 次 |
| 最近记录: |