if (num_samples2 == 252) {
char buffer[1024];
char* p = buffer;
for(int a = 1; a < num_samples2 - 6; a = a + 6){
p += sprintf(p, "%f,",data_samples[a]);
p += sprintf(p, "%f,",data_samples[a+1]);
p += sprintf(p, "%f,",data_samples[a+2]);
p += sprintf(p, "%f,",data_samples[a+3]);
p += sprintf(p, "%f,",data_samples[a+4]);
p += sprintf(p, "%f",data_samples[a+5]);
}
}
无限循环的原因是什么,我真的不明白为什么=?
答案 0 :(得分:0)
此代码没有无限循环
#include <iostream>
int main() {
int num_samples2 = 252;
for (int a = 1; a < num_samples2 - 6; a = a + 6) {
std::cout << a << " ";
}
}
返回1 7 13 19 25 31 37 43 49 55 61 67 73 79 85 91 97 103 109 115 121 127 133 139 145 151 157 163 169 175 181 187 193 199 205 211 217 223 229 235 241
正如其他人指出的那样,您可能会在buffer
以外写入1024
而不是您有未定义的行为。
使用编译选项-fsanitize=address
通过clang或gcc跟踪它。