试图为他们学习左值,右值和内存分配.因此,有很多学习材料会有一些混乱.
rvalue是一个值,只需要在创建它的表达式的边界中存在(至少为C 11).所以它有一个占据的地址和内存块.但根据定义,我们无法获得rvalue的地址,因为与左值相比,它是一个临时对象.
但即使在C 11之前,我们也可以通过从函数返回并将其保存为const引用类型(呃,我猜不是地址而是值)来获取rvalue的地址.
那么,更确切地说,右值分配如何工作?程序或操作系统有多长时间真正记住了创建右值并将其标记为已分配的内存位置,而另一个对象无法取代它?
我怎么看,现在rvalues就像左值一样存储,但我们只是有其他权限来访问它们.并且它们具有其他类型的释放 – 对于超出范围的左值,对于右值,可以通过存在于表达式边界中或者直到没有更多链接来优化它们.