为期一周的培训已经结束了,现在就情况总结如下:
1.函数形参含有指针的时候,要先判断,然后在继续
即if(NULL == pointer) return; 注意NULL放在前面 防止出错
当malloc动态申请内存的时候,要先判断是否申请成功,类似上面所述
在释放内存的时候,利用free()操作,然后将这个pointer=NULL;
2.函数内部动态申请堆的操作,malloc 申请内存在堆上面,返回申请的地址,
当函数调用结束的时候,该内存不会自动释放。
3.介绍一下圈复杂度,如下图所示
利用CChecker工具判断其圈复杂度
4.unsigned int 和 int 在使用的时候有可能会引起bug 在一些条件判断的时候
5.在利用for循环的时候,可以考虑将概率可能发生最大的情况放在最前面 这样效率更高。当进行多次for循环的时候,大数应该放在外面。
6.在指针声明的时候
int *ip; // good practice
int* ip; // legal but misleading
7. 因为,在C/C++语言中,无法检测指针是否未被初始化,也无法区分一个地址是有效地址,还是由指针所分配的存储空间中存放的不确定值的二进制位形成的地址。故建议在使 用指针之前,必须初始化指针,更好的做法是,初始化全部的变量。避免运行时出错。
8. 动态申请的内存之后,应该先将内存空间清0,即memset(pointer,0,sizeof(...)),防止输出的的时候产生错误,屯屯屯屯屯... ...
9.在函数内部,可能会出现局部变量很大而产生溢出的问题,可能是因为函数调用过深(可能是递归)
10.内存泄露的问题,有可能是这样的情况,即一直没有输出 但是内存在一直增长,如下图所示:
所以要即使free掉,然后设为NULL
11. 在函数中调用子函数的时候,会重新开辟一个栈空间 要把这个函数所在的地址存入该开辟栈空间的最后位置
12.