为什么Folloing代码在2010年Visual Studio(X64应用程序)中抛出非法指令例外
Why does the folloing code throw an illegal instruction exception in visual studio 2010 (x64 application)?
我有一个2D游戏,其中每个位置都用3个坐标(x = width,y = height,floes = z)
我尝试编写一个功能,从一开始到结束位置,都会为我列出所有地板的列表。
和以下代码正在抛出"非法指令" - 例外。我很困惑:
std::list<Tile*> Map::getTileArea(Position positionStart, Position positionEnd)
{
std::list<Tile*> tileAreaList;
if(positionStart.x > positionEnd.x) {
std::swap(positionStart.x, positionEnd.x);
}
if(positionStart.y > positionEnd.y) {
std::swap(positionStart.y, positionEnd.y);
}
if(positionStart.z > positionEnd.z) {
std::swap(positionStart.z, positionEnd.z);
}
for(int _x = positionStart.x; _x < positionEnd.x; _x++) {//<-Exception occurs here.
//Procedurestepping told me that but I cannot find an explanation for this.
for(int _y = positionStart.y; _y < positionEnd.y; _y++) {
for(int _z = positionStart.z; _z < positionEnd.z; _z++) {
Tile* tile = getTileByPosition(Position(_x, _y, _z));
if(tile != NULL) {
tileAreaList.push_back(tile);
}
}
}
}
return tileAreaList;
}
有人可以帮我吗?谢谢。
看起来像是一个切割糊错误:
if(positionStart.y > positionEnd.y) {
std::swap(positionStart.y, positionEnd.y);
}
if(positionStart.z > positionEnd.z) {
std::swap(positionStart.z, positionEnd.z);
}
相关文章:
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- C++中的移动分配出现问题.非法指令: 4.
- while 循环 c++ 中的非法指令
- 来自 VS C++ 在 Windows 上的非法指令
- AVX512 非法指令
- 在Visual "Microsoft studio 2019"上设置OpenCV 4.1.1时遇到问题?(非法指令。
- 在运行基本 Avx512 代码时获取非法指令
- exe_common.inl中的非法指令
- 从C 调用Tensorflow Lite .tflite CNN模型时,非法指令
- _mm_fmadd_pd程序收到信号SIGILL,非法指令
- 仅在64位释放模式中的位移位非法指令
- 程序收到信号Sigill非法指令
- 标准::字符串中的非法指令
- 获取列表的第一个和最后一个元素<string>给我非法指令错误
- 为什么Folloing代码在2010年Visual Studio(X64应用程序)中抛出非法指令例外
- std::p romise::get_future 提出非法指令 (SIGILL)
- 使用mpopcnt编译会导致非法指令错误
- 使用带有自定义对齐分配器实现的最新g++,使用SSE和-O3选项编译时出现非法指令(核心转储)
- 程序接收到信号SIGILL,非法指令
- 在VMWare机器上编译的程序在亚马逊服务器上运行时会因非法指令而崩溃