本地对象指针

Max*_*rai 0 c++ pointers

struct Temp
{
   CString one;
   CString two;
};

class Foo
{
   public:
      Temp obj;
      void somewhere();
}

void Foo::somewhere()
{
   void* pData = static_cast<void*>(&obj);
   OwnMethod(pData); // void OwnMethod(void*);
}
Run Code Online (Sandbox Code Playgroud)

问题是:我应该obj在堆上创建还是这种情况不危险(传递本地类对象指针)?

Osw*_*ald 5

如果OwnMethod(pData)将指针存储在somwhere以供以后使用,则一旦Foo::somewhere()被调用的对象被销毁,以后就不再使用了.

如果OwnMethod(pData)只访问指向的数据,那么您是安全的.