当我运行此代码时,它有时会工作,只需点击几下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)