【规则】指针变量、表示资源描述符的变量、BOOL变量声明必须赋予初值
【规则】指向资源句柄或者描述符的变量,在资源释放后立即赋予新值
【规则】类成员变量必须在构造函数中赋予初值
【规则】不对指针变量进行sizeof操作
【建议】尽量使用const
【建议】如果全局变量的访问涉及多个线程,需要考虑多线程竞争条件问题
【建议】同一个函数内,局部变量所占用的空间应小于16KB
【规则】数组作为函数参数时,必须同时将其长度作为函数的参数
【规则】不对内容进行修改的指针型参数,定义为const
【建议】谨慎使用不可重入函数
【建议】字符串或指针作为函数参数时,请检查参数是否为NULL
【规则】循环必须有退出条件
【规则】如果构造函数中分配了需要手动释放的资源,则必须有析构函数
【规则】构造函数内不能做任何可能失败的操作
【规则】严禁在构造函数中创建线程
【规则】严禁出现delete this(调用对象的析构函数,并释放该对象所占用的内存)操作
【建议】尽量避免定义public成员
【规则】确保有足够的存储空间
【规则】对字符串进行存储操作,确保字符串有'\0'结束符
【规则】外部数据作为数组索引时必须确保其在数组大小范围内
【规则】外部数据作为复制内存操作函数的长度时,需要校验其合法性
【规则】调用格式化函数时,禁止format参数由外部可控
【规则】调用格式化函数时,format中参数的类型与个数必须与实际参数类型一致
【规则】整数之间运算时必须严格检查,确保不会出现溢出、符号反转或除以0。
【规则】整型表达式比较或赋值为一种更大类型,必须先用这种更大类型对它进行求值
【规则】禁止对有符号整数进行位操作运算
【规则】禁止整数与指针间互相转化,在64位系统下可能导致高位截断,需使用intptr_t等类型安全转换
【规则】循环次数如果受外部数据控制,需要校验其合法性
【规则】禁止对指针进行逻辑或位运算
【规则】内存申请前,必须对申请内存大小进行合法性校验
【规则】内存分配后必须判断是否成功
【规则】禁止引用未初始化的内存
【规则】内存释放之后立即赋予新值