这几天小编一个刚毕业的学弟来向我取经,也抱怨了一些自己入职后工作上的事情。其中“为什么大学教的都是一些过时的软件技术,比如JSP,工作之前还要从头学习新的技术”这个问题让我特别有感触。按理说作为计算机科学来说,优势就在于实时,快,效率高,如果使用过时的东西,就会导致工作能力低下,必然是没有公司要的。那么为什么大学还在教过时的软件技术呢?于是在网上整理了几个我个人认为比较中肯的答案。
内存越界
1、定义一个数组时,一定要考虑到数组的最大情况,避免造成越界读写。 2、进行memset,memcpy操作时,长度要考虑到边界,不能越界操作。 3、定义一个字符串时,要接上结束符’\0’,不然在计算该字符串长度时,会出现错误,进而导致该字符串的复制等操作越界。 4、指针的加减运算是根据指针类型进行指针的移动。 5、字符串,结构体等长度,要采用strlen,sizeof等函数来获取,不要人工计算,避免人工计算的错误。 6、外部传入函数的入参要进行判断,入参异常,则返回,不执行后面的语句。 7、如果是一个指针变量,使用sizeof计算的是该指针的大小,而不是指针所指内容的大小。 8、尽量减少编译开关,避免编译开关选择错误。
野指针 1、指针删除时,要赋值为NULL,其他地方调用该指针后出错。 2、局部变量的使用,当函数执行结束后,局部变量的生命期结束,内存备释放,此时其他函数不能继续调用该变量。 3、函数返回值为一个局部变量的指针,函数结束后该变量已经被释放,该地址已经为其他地方使用,不能继续对该指针进行操作。 4、内存的重复释放,每次释放内存前,加入判断,如果不为空才释放。并且内存的申请和释放最好在同一个作用域里。
|