C ++类指针到新类与指向类对象的指针有什么区别?

时间:2017-10-15 01:29:17

标签: c++ class pointers

这两个类初始值设定项有什么区别? myClass myObject; myClass *myPointer1; myPointer1 = &myObject;

myClass *myPointer2 = new myClass;

如果第一个指针只是一个指向类对象的指针,那么第二个指针指向哪里?

1 个答案:

答案 0 :(得分:1)

myPointer1指向具有自动存储持续时间的对象。因此,myPointer1拥有它指向的对象,而只是一种访问该对象的方法。另一方面,myPointer2指向具有动态存储持续时间的对象,并且不仅myPointer2用于访问对象,而且还需要在以后使用delete对象为了避免内存泄漏。

有人经常说myPointer1指向"堆栈"而myPointer2指向"堆",分别反映了自动和动态存储持续时间的常见实施策略。

您无法通过检查其值来判断指针是指向自动存储持续时间的对象还是指向动态存储持续时间的对象。您应该使用智能指针对象(std::unique_ptr<myClass>等)以避免内存泄漏。