美文网首页
c++注意点

c++注意点

作者: __若只如初见 | 来源:发表于2019-07-07 18:01 被阅读0次
    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. 变量没初始化,值是那片内存原始值,一个神奇的值。没初始化,做比较大小或者其他操作,很容易出现问题。(正确地初始化变量是一种好的编程习惯,否则程序会产生意想不到的结果)

    相关文章

      网友评论

          本文标题:c++注意点

          本文链接:https://www.haomeiwen.com/subject/ewzbhctx.html