C++给数组赋值后不确定
潇湘夜雨~ 2019-10-14 11:24:59 pcap_file_header pfh;
pcap_header ph;
for(int i = 0; i < NUM_RD; i ++){
myRd[i] = new RawData();
}
int count=0;
void * buff = NULL;
int readSize=0;
int ret = 0;
int framesRead;
int temp = 0; //use to count pcap frames, such that frame with large value
framesRead = 0;
FILE *fp = fopen(PCAP_FILE, "rw");
if (fp==NULL) {
fprintf(stderr, "Open file %s error.",PCAP_FILE);
ret = ERROR_FILE_OPEN_FAILED;
goto ERROR;
}
fread(&pfh, sizeof(pcap_file_header), 1, fp);
buff = (void *)malloc(MAX_ETH_FRAME);
while(true) { //check this out. how many frames are read
memset(buff,0,MAX_ETH_FRAME);
//read pcap header to get a packet
//get only a pcap head count .
readSize=fread(&ph, sizeof(pcap_header), 1, fp);
if (readSize<=0) {
break;
}
if (buff==NULL) {
fprintf(stderr, "malloc memory failed.\n");
ret = ERROR_MEM_ALLOC_FAILED;
goto ERROR;
}
//get a packet contents.
//read ph.capture_len bytes.
readSize=fread(buff,1,ph.capture_len, fp);
if (readSize != ph.capture_len) {
free(buff);
fprintf(stderr, "pcap file parse error.\n");
ret = ERROR_PCAP_PARSE_FAILED;
goto ERROR;
}
// if(myrd_index == MAX_NUM_RD_BUFF){ // myrd is a ring buffer with size of MAX_NUM_RD_BUFF=100
// myrd_index = 0;
// }
// read IMU
if(ph.capture_len == 140){
temp ++;
if(temp > 40200){
float* tmpdata = processIMUFrame(buff, ph.capture_len);
//将各坐标轴的陀螺仪数据存入rawdata中
myRd[myrd_index]->gyro_x = tmpdata[0];
myRd[myrd_index]->gyro_y = tmpdata[1];
myRd[myrd_index]->gyro_z = tmpdata[2];
myrd_index ++;
myframe_index++;
}
if(myframe_index == totalFrames){
break;
}
}
qDebug()<<"myRd[myrd_index]->gyro_x:"<<myRd[myrd_index]->gyro_x<<endl;
if (feof(fp) || readSize <=0 ) {
break;
}
}
ERROR:
//free
if (buff) {
free(buff);
buff=NULL;
}
if (fp) {
fclose(fp);
fp=NULL;
}
输出结果是这个:
myRd[myrd_index]->gyro_x: 4.05582e-08
myRd[myrd_index]->gyro_x: 4.05582e-08
myRd[myrd_index]->gyro_x: 4.05582e-08
myRd[myrd_index]->gyro_x: 4.05582e-08
myRd[myrd_index]->gyro_x: 4.05582e-08
不知道哪里问题