发送堆栈上声明的变量的地址?

dra*_*vic 2 c++

我有一个疑问,即声明变量,它们的范围,以及它们的地址是否可以发送到其他函数,即使它们是在堆栈中声明的?


class A{
    AA a;
    void f1(){
        B b;
        aa.f2(&b);
    }
};

class AA{ B* mb; f2(B* b){ mb = b; //... } };

之后,我AA::mb在代码中使用指针.所以我想知道的事情如下.
当程序退出A::f1()函数时,b变量自声明为局部变量并放置在堆栈上后,不能再使用了.

  1. AA :: mb指针的有效性会怎样?
    它包含本地变量的地址,它不再可用,所以指针不再有效了?
  2. 如果Bclass是a std::<vector>,并且AA::mb不再是指向该向量的指针,而是例如向量集合本身.我想避免将所有内容复制AA::f2()到成员AA::mbmb = b.你会推荐哪种解决方案,因为我无法指定它,因为它会在程序退出时被销毁AA::f2()