分配'this'指针的内存

nil*_*esh 5 c++ pointers this

在C++中,这个指针作为隐藏参数传递给方法,它实际上指向当前对象,但是'this'指针存储在内存中...堆栈,堆,数据在哪里?

Che*_*Alf 6

该标准未指定this指针的存储位置.

当它在该函数的调用中传递给成员函数时,一些编译器将它传递到寄存器中,而其他编译器将它传递给堆栈.它还可以依赖于编译器选项.

关于你唯一能确定的是基本类型this右值,所以你不能拿它的地址.

并非总是如此.

在预标准C++中,您可以分配给this,例如为了指示构造函数失败.这是在引入例外之前.指示构造失败的现代标准方法是抛出异常,这保证了有序清理(如果没有被用户的代码挫败,例如臭名昭​​着的MFC放置new错误).