gpt4 book ai didi

c++ - 常量正在变化但不在内存中

转载 作者:行者123 更新时间:2023-11-28 06:47:49 25 4
gpt4 key购买 nike

首先,当我收到错误时,我正在使用 XCode C++。我将一个指针变量声明为常量,并设置一次值。然后在代码中循环运行 3-5 次,第一次是正确的,但随后根据变量的数量,坐标值变为接近 0(即 4.59163e-41)。我知道内存地址不会改变,只是它保存的值会改变。此外,我正在处理大量数据,我的意思是在 2,000 到 20,000 个坐标之间。我确定我是由于大问题或小问题造成的,因此我们将不胜感激。以下是更改 [not-so] 常量变量的一些代码:

我在头文件中将它们声明为:

const float* m_xPointValues;
const float* m_yPointValues;

然后在 .cpp 文件中,我将它们设置在以下函数中:

void ccGraphDisplay::setPointValues(float* xPointValues, float* yPointValues, unsigned numberOfPoints)
{
assert(xPointValues);
assert(yPointValues);

m_xPointValues = xPointValues;
m_yPointValues = yPointValues;
m_numberOfPoints = numberOfPoints;

....}

然后在循环函数中我移动它们,但据我所知这不会改变它们的值:

for (unsigned i=0;i<m_numberOfPoints;++i)
{
shiftedXValue = (((m_xPointValues[i] - m_xAbsoluteMin)/(m_xAbsoluteMax-m_xAbsoluteMin))*(m_roi[2]-m_roi[0]))+m_roi[0];
shiftedYValue = (((m_yPointValues[i] - m_yAbsoluteMin)/(m_yAbsoluteMax-m_yAbsoluteMin))*(m_roi[3]-m_roi[1]))+m_roi[1];
}

对我来说这是一个非常奇怪的错误。我不会在其他任何地方更改 m_xPointValues 或 m_yPointValues 的值,并且在最大的数据集中,只有坐标的末尾部分发生变化。我还设置了循环以打印出循环开始和结束时的值,结束总是与开始相同,但是当循环重新开始时它的值就会发生变化。

最后,我已经尝试过的一些调试思路包括:1) 将指针从存储 float 更改为 double 2) 改变指针不再是常量3)传入常量值(double和float)

任何帮助将不胜感激(包括尝试的想法!)。谢谢!

最佳答案

这听起来像是您传递给 setPointValuesxPointValuesyPointValues 指向的位置,它们的生命周期与 m_xPointValuesm_yPointValues

关于c++ - 常量正在变化但不在内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24641072/

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