STL向量c ++指针迭代器范围基于循环原始指针

时间:2016-01-24 10:43:23

标签: c++ pointers for-loop vector stl

当我运行此代码时,它有时会工作,只需点击几下HUD就会出现访问冲突。

(我使用的是Visual Studio 2015)

hud是0xfff50000(不是有效的指针,也许是迭代器?)

HUD :: Elements是一个静态的std :: vector

HUD就像这样创建。

HUD *ent = new HUD;
ent->script_ptr = duk_require_heapptr(ctx, -1);
HUD::Elements.push_back(ent);

//for (int i = 0; i < HUD::Elements.size(); i++) {
    //auto hud = HUD::Elements.at(i);
//above code works fine without any exceptions
//hud or either *hud both crash
for(auto hud : HUD::Elements) {
    if (hud->script_ptr == nullptr)
        continue;
//handle onclick code here

有人可以解释为什么会崩溃,以及是否仍然可以使用基于for循环的范围?无需使用

for(int i = 0; i < HUD::Elements.size(); i++)HUD *hud = HUD::Elements.at(i)

0 个答案:

没有答案