1
假设我有一个函数foo(),通过价值商店指针函数的返回值
A foo() {
A a(...);
return A;
}
现在,在功能栏中返回A类的对象()我的指针存储到
的返回值void bar() {
A* pA = &foo();
}
返回值是否超出了bar()结尾处的范围,或者是否需要调用pA上的删除?
假设我有一个函数foo(),通过价值商店指针函数的返回值
A foo() {
A a(...);
return A;
}
现在,在功能栏中返回A类的对象()我的指针存储到
的返回值void bar() {
A* pA = &foo();
}
返回值是否超出了bar()结尾处的范围,或者是否需要调用pA上的删除?
这比这更糟!
在bar
非关联pA
将不确定行为。这是因为foo()
会返回一个匿名临时表,其生存期限于呼叫现场的声明。
您只有有史以来调用delete
上的指针,通过使用new
分配的结果获得指针。
非常感谢,这很清楚。 – Dooggy
***或是否有任何需要在PA上调用删除***您不会将其删除。 ***返回值是否会在bar()结束时超出范围***在此之前。你不能这样做。 – drescherjm