我有一个整数:(对iPhone使用xcode
。)
int wordCounter=1;
稍后,当我用数组填充数组 - 作为指针时,在for循环中,它在变为某个数字后会以某种方式变为0。我已经多次检查我的程序是否存在错误,我意识到我甚至没有在任何地方减少它。我确实有wordCounter++
。
现在我已经看到我有很多像这样的线,在它们之后变成0:
if(tempBinary[countWords-1][j] != tempBinary[countWords][j])
所以我在想countWords-1
一次又一次地减少它,这可能吗?
我在整个程序中没有对此变量进行任何其他减量或初始化。
我可以看到,当tempBinary
定义为大小7时,它初始化为5,如果tempBinary
为5,则将其归零为3 ..
是否有可能数组溢出并将其归零?我不这么认为..
编辑(其中一个有问题的州)
int countWords=1;
int stabilityK=0;
tempBinary[0][0]= tempBinary[0][1]=tempBinary[0][2]=tempBinary[0][3]=tempBinary[0][4]=tempBinary[0][5]=tempBinary[0][6]=tempBinary[0][7]=1 ;
for(int k=0;k<numOfBuffers;k++)
{
NSLog(@"countwords:%d",countWords-1);
float *temp=getFFT(buffersRing[k],buffersRing[k][0]);
for(int j=0;j<wordSize;j++)
{
switch(state_on_signal)
{
case WAIT_FOR_SECOND_CHANGE:
//get new word
if(temp[goodBins[j]] > decisionLine[j])
tempBinary[countWords][j]=1;
else
tempBinary[countWords][j]=0;
if(tempBinary[countWords-1][j] != tempBinary[countWords][j])
newData=1;
NSLog(@"s1: countwords:%d",countWords-1);
if(j==wordSize-1)
{
NSLog(@"s2: countwords:%d",countWords-1);
NSLog(@"PRE TEMP:%d%d%d%d%d%d%d%d",tempBinary[countWords-1][0],tempBinary[countWords-1][1],tempBinary[countWords-1][2],tempBinary[countWords-1][3],tempBinary[countWords-1][4],tempBinary[countWords-1][5],tempBinary[countWords-1][6],tempBinary[countWords-1][7] );
NSLog(@"NEW TEMP-WAIT FOR SECOND CHANGE :%d%d%d%d%d%d%d%d",tempBinary[countWords][0],tempBinary[countWords][1],tempBinary[countWords][2],tempBinary[countWords][3],tempBinary[countWords][4],tempBinary[countWords][5],tempBinary[countWords][6],tempBinary[countWords][7] );
NSLog(@"s3: countwords:%d",countWords-1);
//TAKE NEW DATA
if(newData==1)
{
NSLog(@" TOOK new BINARY at current k:%d, so took data at: %d",k,(k+markedK)/2);
for(int s=0;s<wordSize;s++)
{
if( getFFT(buffersRing[(k+markedK)/2],buffersRing[(k+markedK)/2][0])[goodBins[s] ] >decisionLine[s] )
binary[countWords-1][s]= 1;
else
binary[countWords-1][s]= 0;
}
NSLog(@"s4: countwords:%d",countWords-1);
NSLog(@"BINARY%d: %d%d%d%d%d%d%d%d :%d",(countWords-1), binary[(countWords-1)][0], binary[(countWords-1)][1], binary[(countWords-1)][2], binary[(countWords-1)][3], binary[(countWords-1)][4], binary[(countWords-1)][5], binary[(countWords-1)][6], binary[(countWords-1)][7],[self getDecimal:binary[countWords-1]]);
countWords++;
markedK=k;
state_on_signal=WAIT_FOR_STABILITY;
}
newData=0;
}
break;
答案 0 :(得分:1)
所以我认为countWords-1一次又一次地减少它, 那可能吗?
没有
通常当您滥用指针并将值写入内存中的错误地址时会发生这种情况。
例如:声明在哪里以及如何声明 tempBinary ?
由于不可能(至少对我而言)看到问题只是查看代码,我建议您使用调试器逐步执行代码,并查看 countWords 何时更改。这就是问题所在(至少其中一个)。