加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

依赖反转,异常,auto_ptr,多态,STL容器,虚构造函数

发布时间:2020-05-27 12:34:33 所属栏目:程序设计 来源:互联网
导读:(1) 栈上变量必须初始化 (2) 从堆上分配的内存必须初始化 (3) 栈上局部变量是否有大数组变量,导致栈超出默认限制溢出 (4) 栈中是否有不合理的递归,导致栈超出默认限制溢出 (5) 必须对内存耗尽的情况进行处理 (6) 释放某个指针后,必须将该指针变量赋值为NUL

(1) 栈上变量必须初始化

(2) 从堆上分配的内存必须初始化

(3) 栈上局部变量是否有大数组变量,导致栈超出默认限制溢出

(4) 栈中是否有不合理的递归,导致栈超出默认限制溢出

(5) 必须对内存耗尽的情况进行处理

(6) 释放某个指针后,必须将该指针变量赋值为NULL,避免野指针的出现

(7) 禁止对同一指针delete或者free两次或以上

(8) 对数组操作,必须强制确保下标不会越界

(9) 避免频繁的不等长小内存申请和释放

(10) 内存申请和释放必须配对,防止内存泄漏

(11) 析构数组类型必须使用[] delete形式

(12) free和malloc,delete和new 必须配对使用,不能混用

(13) 线程的使用也是占用了内存,是否考虑到了线程释放

(14) 对于覆盖标准的operator new和operator delete函数, 必须配对重写

(15) 对于内存长度,不能靠自己计算,必须使用sizeof和注意字节对齐

(16) 对于C字符串,是否考虑到字串末位的'/0'结束符,比如: char *p = "WoKao"; char buffer[5]; strpcy(buffer,p);

(17) 使用strcpy(char *dest,const char *src)等str系列函数,是否考虑到了dest缓冲溢出的情况,应该优先确保dest不会溢出或者使用n族函数

(18) 使用int sprintf(char *string,char *farmat [,argument,...]);函数的时候是否考虑到了溢出,应该优先确保string不会溢出或者使用snprintf函数

(19) 使用fgets函数替代gets

(20) mem族函数注意确保操作空间不会溢出

(21) 进行内存拷贝,赋值或者初始化的时候,尽量用mem函数族替代循环操作

(22) 小心指针和数组的区别,比如const char *p = "12345678",char buffer[] = "12345678"; cout<<sizeof(p)<<endl,cout<<sizeof(buffer)<<endl;等等

(23) 是否试图修改常量字符串,比如const char* p = "WoKao",p[0] ='R';

(24) 是否考虑数组名作为函数参数传递时,数组退化为指针。

(25) 注意避免大量临时对象的产生导致内存的急速消耗, 比如连续的很长的 string + 操作

(26) 注意避免对临时对象进行引用,比如 string a = "123"; string b = "456"; const char* p = (a + b).c_str();

(27) 在函数参数传递时,尽量使用指针或者引用,避免直接传值操作,特别是大对象类型

(28) 对于auto_ptr智能指针的使用,是否考虑到了所有权的转移,导致的内存释放

(29) 对于vector类,是否考虑到了其内部内存不足时,其自动扩展2倍内存机制,对程序运行是否有影响

(30) 在使用STL string类的时候,是否考虑了string类实现的多样性对程序的影响。

(31) 在某个模块,对象需要结束其生命周期的时候,是否释放了其对应的内存资源。比如C++的析构函数中是否delete了其对应的内存资源

(32) 小心共享内存上存放有vtable的对象,另外一个进程进行删除时,导致非法访问

(33) 不能够对含有vtable的对象进行memset初始化

(34) 计算结构变量偏移必须使用offsetof

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读