gpt4 book ai didi

C++ 参数更改为垃圾,即使使用常量调用也是如此

转载 作者:太空宇宙 更新时间:2023-11-04 12:07:16 27 4
gpt4 key购买 nike

它现在似乎可以工作了,谢谢。

我的问题是其中一个函数的参数似乎丢失了。

我在 Windows 7 上使用 Code::Blocks 和 GNU GCC 编译器。

好的,我有一个带有 6 个 GLfloat 参数的函数。

void ProMesh::gen_quad_world(GLfloat _w,GLfloat _h,GLfloat _x1,GLfloat _y1,GLfloat _x2,GLfloat _y2);

如您所见,它是 ProMesh 类的一部分。在 ProMesh 中,我有一个初始化函数,它调用有问题的 gen_quad_world 函数。

void ProMesh::initialize(GLfloat _w, GLfloat _h,GLfloat _x1,GLfloat _y1,GLfloat _x2,GLfloat _y2)
{
numverts = 18;
numtexcoords = 12;
vert_array = NULL;
tex_array = NULL;
id = glGenLists(1);
gen_quad_world(_w,_h,_x1,_y1,_x2,_y2);
}

如您所见,它只是将参数传递给 gen_quad_world。

目前还好吗?

无论 _w 和 _h 的值如何,gen_quad_world 都会收到愚蠢的长数字。

例子:我打电话

gen_quad_world(1,2,345,4,5,6);

我明白了_w: 3.7648e-039_h: 7.4044e+031_x1:345_y1: 4_x2:5_y2:6在 gen_quad_world 函数中。怎么会这样?这很奇怪。此外,当我在 Debug模式下逐行执行它时,它有时会正常工作。

更复杂的是,我有一个几乎相同的函数,称为 gen_quad_local,它需要相同的参数。如果我用那个代替它,那么它就可以正常工作。

------------------------看gen_quad_world函数,看下面-------------- ------

void ProMesh::gen_quad_world(GLfloat _w,GLfloat _h,GLfloat _x1,GLfloat _y1,GLfloat _x2,GLfloat _y2)
{
std::ofstream myfile("gen_quad_world.txt");
myfile<<"_w: "<<_w<<"\n_h: "<<_h<<"\n";
myfile<<"_x1: "<<_x1<<"\n_y1: "<<_y1<<"\n";
myfile<<"_x2: "<<_x2<<"\n_y2: "<<_y2<<"\n";
myfile.close();
glNewList(id,GL_COMPILE);
glBegin(GL_TRIANGLES);
glVertex3f(_w,0,0);
glVertex3f(0,0,0);
glVertex3f(0,_h,0);
glVertex3f(0,_h,0);
glVertex3f(_w,_h,0);
glVertex3f(_w,0,0);
glEnd();
glEndList();
}

最佳答案

imo 你的问题看起来像使用已删除的对象覆盖其他结构数据 - 检查你的指针上的代码 - 确保你不调用任何已删除数据的方法,将所有你不使用的指针清除为 NULL不再(还要确保所有都在 ctors 中初始化)- 这将使您可以轻松找到对已删除对象的 foo-> 的调用

关于C++ 参数更改为垃圾,即使使用常量调用也是如此,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11521635/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com