James Devlin
New member
הבאג המוזר בעולם - cpp
יש לי באג מאוד מוזר בקוד הבא:
double val1 = gamma * fabs((double)j+pOffset[plane][k][offset]);
pRangeTerm[plane][k][offset].data()[j+winsize]=val1;
double val2 = pRangeTerm[plane][k][offset].data()[j+winsize];
כשעוברים עם debugger, הערך של val1 הוא 0.05 אבל הערך של val2 הוא 0, כאילו שלא הכניסו לשם שום ערך. זה משתחזר בכל פעם! איך זה יכול להיות?
הטיפוס של pRangeTerm הוא PixelBuffer1D<T_message>** pRangeTerm[2]; zzz כאשר T_message זה double. אני אעתיק לכאן את ההגדרה של PixelBuffer1D:
template <class T>
class PixelBuffer1D
{
private:
short int nDim;
T* pData;
public:
PixelBuffer1D(void)
{
nDim=0;
pData=NULL;
}
PixelBuffer1D(int ndims)
{
allocate(ndims);
}
void allocate(int ndims)
{
nDim=ndims;
}
~PixelBuffer1D()
{
nDim=0;
pData=NULL;
}
inline const T operator [](int index) const
{
return pData[index];
}
inline T& operator [](int index)
{
return pData[index];
}
T*& data(){return pData;};
const T* data() const{return pData;};
int nElements() const{return nDim;};
};
מה אני מפספס כאן? איך זה יכול להיות ששמים ערך במשתנה והוא נשאר אפס?
תודה מראש!!
יש לי באג מאוד מוזר בקוד הבא:
double val1 = gamma * fabs((double)j+pOffset[plane][k][offset]);
pRangeTerm[plane][k][offset].data()[j+winsize]=val1;
double val2 = pRangeTerm[plane][k][offset].data()[j+winsize];
כשעוברים עם debugger, הערך של val1 הוא 0.05 אבל הערך של val2 הוא 0, כאילו שלא הכניסו לשם שום ערך. זה משתחזר בכל פעם! איך זה יכול להיות?
הטיפוס של pRangeTerm הוא PixelBuffer1D<T_message>** pRangeTerm[2]; zzz כאשר T_message זה double. אני אעתיק לכאן את ההגדרה של PixelBuffer1D:
template <class T>
class PixelBuffer1D
{
private:
short int nDim;
T* pData;
public:
PixelBuffer1D(void)
{
nDim=0;
pData=NULL;
}
PixelBuffer1D(int ndims)
{
allocate(ndims);
}
void allocate(int ndims)
{
nDim=ndims;
}
~PixelBuffer1D()
{
nDim=0;
pData=NULL;
}
inline const T operator [](int index) const
{
return pData[index];
}
inline T& operator [](int index)
{
return pData[index];
}
T*& data(){return pData;};
const T* data() const{return pData;};
int nElements() const{return nDim;};
};
מה אני מפספס כאן? איך זה יכול להיות ששמים ערך במשתנה והוא נשאר אפס?
תודה מראש!!