Vector具有未定义的值,即使这些值已被显式定义
Vector has undefined value even though the values have been explicitley defined
所以我在代码中有一个测试元素(teste
)的向量,所以我可以检查我的一个函数中的元素的添加和删除。定义如下:
std::vector<GLuint> teste = {
0, 1, 2,
4, 3, 5
};
然后我有一个函数打印这个和由我的函数
产生的元素向量for(size_t i = 0; i < TestBuffer.Elements.size(); ++i){
std::cout << "!" << i << std::endl;
std::cout << TestBuffer.Elements[i] << std::endl;
std::cout << teste[i] << std::endl;
}
它产生以下输出
!0
0
0
!1
1
1
!2
2
2
!3
4
4
!4
3
4294967293
!5
5
4
这到底是怎么回事?NOTHING在teste
被定义后编辑它。此外,teste[4]
的值不会改变(注意:我不认为该值是GLuint
的最大值,因为GLuint -1
的值为244294967295
)。
编辑:我不打算包括所有的代码,因为它超过1000行,没有人想读。下面是编辑TestBuffer
(一个BufferData
)的函数,下面是声明和使用teste
的地方。
这也是在使用OpenGL所以GLuint是OpenGL无符号整型
这几行似乎有问题:
//Update the value of the vertices
for(uint i = VerticesEnd; i < Vertices.size(); ++i){
VerticesPositions[i] -= ID.VerticesSize;
}
in BufferData::RemoveData
。通过查看其余的代码,我冒昧地猜测它应该是:
//Update the value of the vertices
for(uint i = VerticesEnd; i < VerticesPositions.size(); ++i){
VerticesPositions[i] -= ID.VerticesSize;
}
你应该张贴一些更多的代码,什么是你的GlueInt ?什么是testbuffer。elements ?
如果我这样做,它会像它应该的那样工作:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
std::vector<int> teste = {
0, 1, 2,
4, 3, 5
};
for (size_t i = 0; i < teste.size(); ++i){
std::cout << "!" << i << std::endl;
std::cout << teste[i] << std::endl;
cin.get();
}
return 0;
}
所以它必须与你没有发布的其他代码相匹配,所以如果你想要一个答案,请发布更多的代码
您正在看到未定义的行为,可能是由于程序的其他部分访问超出其定义边界的数组或向量。如果不查看更多代码,就不可能进行诊断。考虑到发布你的代码是不切实际的,你只能自己去找。
在Microsoft的Visual Studio中,您可以在修改特定内存地址时设置断点。我发现这在跟踪此类问题时非常有用。
相关文章:
- 编译C++时未定义的引用
- vscode g++链路故障:体系结构x86_64的未定义符号
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 不知道某个东西是否被忽略会引入未定义的行为吗
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 未定义的引用在哪里
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- c++11评估顺序(未定义的行为)
- 使用mysql c++连接器的未定义引用
- 从python调用openMP共享库时,未定义opnMP函数
- 在 Mac 上使用 CMAKE 将 FFTW 和 FFTWPP 链接到项目中时未定义的符号
- Cmake 链接问题:未定义对 Button::mousePressEvent(QGraphicsSceneMouseE
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 具有外部"c"和程序集的未定义函数
- 此增量后语句是否会导致未定义的行为?
- 尝试调用 .h 文件中定义的变量时出现变量未定义错误
- 定义未定义的行为
- 定义未定义的行为