C ++-存储指向堆栈变量的指针

时间:2018-12-22 16:59:18

标签: c++ pointers

如果我有此代码:

class MyClass {... }
...
std::vector<MyClass*> myObjects;
for(int i = 0; i < 4; i++)
{
    MyClass m;
    myObjects.push_back(&m);
}

这样的代码安全吗? 请注意,我并不是在“更新”对象,而是在堆栈上创建它们,而是存储指向它们的指针。 也就是说,在C ++规范中有什么(如果有的话)可以保证它不会“重用” m所占用的堆栈存储器(的一部分),无论是用于循环的后续迭代,还是用于完全是其他东西吗?

它可以编译,并且似乎可以正常工作。但是我不确定是否有任何机制可以识别出我已指向该对象的指针,因此不要用其他东西覆盖内存地址。

0 个答案:

没有答案