如果我有此代码:
class MyClass {... }
...
std::vector<MyClass*> myObjects;
for(int i = 0; i < 4; i++)
{
MyClass m;
myObjects.push_back(&m);
}
这样的代码安全吗?
请注意,我并不是在“更新”对象,而是在堆栈上创建它们,而是存储指向它们的指针。
也就是说,在C ++规范中有什么(如果有的话)可以保证它不会“重用” m
所占用的堆栈存储器(的一部分),无论是用于循环的后续迭代,还是用于完全是其他东西吗?
它可以编译,并且似乎可以正常工作。但是我不确定是否有任何机制可以识别出我已指向该对象的指针,因此不要用其他东西覆盖内存地址。