【发布时间】:2010-10-10 16:04:12
【问题描述】:
我不确定下面C++代码的sn-p是否合法:
std::vector<int*> myints;
for (int i = 0; i<N; i++) {
int j = i;
myints.push_back(&j);
}
for (int i=0; i<myints.size(); i++) cout<<*(myints[i])<<endl;
编译器如何处理这个问题?我了解变量 j 本身在退出 for 循环时超出范围,但整数会在堆栈上本地分配 N 次,以便向量中的元素指向的 int 对象在外部保持有效循环?
非常感谢! -伯特
【问题讨论】:
-
你的目标是什么?为什么你有
vector< int * >而不是vector< int >? -
只是一个例子,int 可以是任何对象。