这些没躲过的坑

2018.05.05

本次需要统计4096个像素的平均值,使用了如下代码

double CtuMean=temp/height*width;
错误的原因是没有考虑到运算符的优先级,以后这种情况要注意。尽量加个括号。

2018.05.07

vs2005以上,使用strcat()函数时,会提示“建议使用strcat_s()”函数,如果不想使用这个函数,关闭预编译提醒,

在项目->属性->C/C++–>预处理器->预处理器定义中添加“_CRT_SECURE_NO_WARNINGS”,即可关闭“_CRT_SECURE_NO_WARNINGS”的警告。

2018.05.25

写了一个程序,对监控类视频进行运动检测,主函数是这么写的。

#include "interface.h"
#include<iostream>
#include <time.h>

//#define FRAME_SIZE 3110400 //1920*1080分辨率
#define FRAME_SIZE 1382400   //1280*720分辨率
char yuvData[FRAME_SIZE];
char resultMatrix[128][128];//检测区域最大128x128
bool alarmResult;
int main()
{
...
//读取文件到内存
fread(yuvData, sizeof(char), sizeof(yuvData), InputFile);
...
}

出现的问题:
1.”0xC0000005: 写入位置 0x00000000 时发生访问冲突的解决办法”
原因:第一次试验用的1920*1080分辨率视频,后来换了1280*720分辨率,但是宏定义的大小没有变,还是原来1920*1080分辨率的大小。导致读取文件出错,引起后边一系列出错。
2.char yuvData[FRAME_SIZE];放在main函数中报错,栈溢出。
全局变量在静态存储区分配内存,局部变量是在栈上分配内存空间的。(c++在运行时会动态创建一个堆栈段,里面存放着调用栈,保存着函数的调用关系和局部变量。)如果数组太大,可能会造成栈溢出。大数组最好放在全局变量区

2018.06.04

今天不写代码,就忘了VS操作中如何从函数定义的一个括号转到结束处的另外半个括号的方法,记录一下:

ctrl+]

猜你喜欢

转载自blog.csdn.net/wu_qz/article/details/80448487