代码如下:CString m_Sequence[16];
//用调试器查看,m_Sequence[0]~m_Sequence[15]的值依次为:+Ca,-Si,-Fe,-Na,-K,-Mg,-Cl,-P,-S,-Al,,这样的值//但是发现m_Sequence[]在下面的代码中被改变了,不知道为什么
for(j=0;j<16;j++)
{
if(pAnalyte->m_Sequence[j][0] == '-')
pAnalyte->expFac[j] = 0.0;
else
pAnalyte->expFac[j] = rhs[l++];
}
上面的for循环看似没有改变m_Sequence[]的值,但是m_Sequence[]的值却在j循环到12的时候被置空了
用vc6的变量监视器查看m_Sequence[]的值,循环在12次之前没有问题,
但当j变为13时,发现m_Sequence[0]和m_Sequence[1]变为""
当j变为14时,发现m_Sequence[2]和m_Sequence[3]也变为""
//用调试器查看,m_Sequence[0]~m_Sequence[15]的值依次为:+Ca,-Si,-Fe,-Na,-K,-Mg,-Cl,-P,-S,-Al,,这样的值//但是发现m_Sequence[]在下面的代码中被改变了,不知道为什么
for(j=0;j<16;j++)
{
if(pAnalyte->m_Sequence[j][0] == '-')
pAnalyte->expFac[j] = 0.0;
else
pAnalyte->expFac[j] = rhs[l++];
}
上面的for循环看似没有改变m_Sequence[]的值,但是m_Sequence[]的值却在j循环到12的时候被置空了
用vc6的变量监视器查看m_Sequence[]的值,循环在12次之前没有问题,
但当j变为13时,发现m_Sequence[0]和m_Sequence[1]变为""
当j变为14时,发现m_Sequence[2]和m_Sequence[3]也变为""
解决方案 »
- windows 中“名词”的迷惑
- 关于WMI编程的书?
- 文件大小的问题???
- 请问RGB->CMYK, RGB->HSB, RGB->LAB 的颜色转化代码
- void *是什么意思?
- setrop()函数怎么用?
- 什么代码会使加载DLL里的APP的this值成为加载它的程度的APP值,顶者有分,答上的加100分
- 用vc学了一年多的c++,今天开始学mfc了,却遇到一打的问题,大虾请指点!!
- 如何在vc++利用odbc向sql sever 2000表中的image字段写入一个二进制数据(s_bj)
- 分数全送上了!!!
- OnSize
- VirtualAlloc开辟内存,用memcpy_s内存拷贝数据,总是LPVOID“未知大小”
问题不是出在循环内。
循环内唯一做的就是比较。
比较会返回true or false.
不涉及赋值呀。
=========
这样引用CString数组可以吗?
if(pAnalyte->m_Sequence[j].Left(1) == '-')
在 if(pAnalyte->m_Sequence[j][0] == '-')
pAnalyte->expFac[j] = 0.0;
else
pAnalyte->expFac[j] = rhs[l++];
这些语句执行后内存溢出了。
内存越界啊。说的已经很明白了。你要单步每个语句都进去看看。 而不是仅在for语句这个。