前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >c++注意点

c++注意点

作者头像
瑶瑶
发布2020-06-03 15:44:32
4560
发布2020-06-03 15:44:32
举报
文章被收录于专栏:音视频技术开发
  1. malloc分配字符串空间时,要长度+1,因为还有字符串结束符/0 eg. this->filePath = (char *)malloc(strlen(filePath) + 1);
  2. 字符串复制,用函数memcpy(this->filePath,filePath,strlen(filePath) + 1); , strcpy是不安全的。
  3. .hpp 头文件中定义,只能做定义操作,不能new ,一些初始化操作应该放在主程序里或者构造函数里。
  4. 函数参数是int * frameDataLength, char ** data 时,调用时,不能直接声明int * 和 char** 传入,因为他们是野指针或者空指针,需要声明int和char *,然后传入&int &char *。
  5. 函数中,给函数指针参数赋值时,不能赋值指针:data=&data2。因为每次执行函数,参数变量是新建的,指针只是指向与函数外的变量相同data=&data2,只把函数内的指针指向改了,函数外的指针变量并没有改变。所以需要*data = data2,把地址里的数值修改了,函数外部也能收到变化。
  6. 正常情况下,return 0,异常情况,return 负数 0 表示false,非0 表示true
  7. 往某字符串后面拷贝: memcpy(allFrame, fileFrameArr, sizeof(ZSVideoFileFrame)); memcpy(allFrame + sizeof(ZSVideoFileFrame), data, frameDataLength);
  8. linux下运行抛出异常:Floating point exception(浮点数异常)
    • 高版本编译的gcc库,在低级gcc下运行;
    • 非法运算,如分母为0等;(首先检查该项,是否有分母为零的情况,如文件路径不正确,由于找不到图片,给出图片总数为0,但内部运算了识别率等用到该图片数作为分母的情况)
  9. 写完程序先检查释放资源 new malloc 是否delete free
  10. 写完程序最好用工具检查内存增长情况
  11. 如果data 声明为char * data,没有明确分配内存, 会成为一个野指针,代码会core char * data = (char *)malloc(1000); if(fread(data, sizeof(char), 1000, h264VideoFile)){...
  12. free的时候,如果char * 没赋值,也没赋NULL,会core,因为时野指针,指向的位置安全性未知
  13. free标准代码 if(dataP != NULL){ free(dataP); dataP = NULL; }
  14. 变量没初始化,值是那片内存原始值,一个神奇的值。没初始化,做比较大小或者其他操作,很容易出现问题。(正确地初始化变量是一种好的编程习惯,否则程序会产生意想不到的结果)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档