特点
–编译器不能自动发现这类错误,通常是在程序运行时才能捕捉到
–时隐时现,无明显症状
分类
–内存分配未成功,却使用了它
–内存分配成功,但是尚未初始化就引用它
–内存分配成功,并且已经初始化,但操作越过了内存的边界
–忘记了释放内存,造成内存泄漏
–释放了内存,却继续使用它
常见错误1:
–内存分配未成功,却使用了它
起因
–没有意识到内存分配会不成功
–编程新手容易犯
解决对策
–在使用内存之前,检查指针是否为空指针(NULL)
if (p == NULL)
{
printf("No enough memory!\n");
exit(0);
}
常见错误2:
–内存分配成功,但是尚未初始化就引用它
n起因
–没有初始化的观念
–误以为内存的默认值全为0
解决对策
–即使是赋0值也不可省略,不要嫌麻烦
常见错误3:
–内存分配成功,并且已经初始化,但操作越过了内存的边界
–例如:使用数组时经常发生下标“多1”或者“少1”的操作
解决对策:
–在for语句中,注意循环次数不要搞错
常见错误4:
–忘记释放内存,造成内存泄漏(Memory Leak)
–“内存泄露”一词类似“原料泄露”
–泄露出去的原料不能被利用,导致生产过程中原料不足
–好比借东西不还
–如果申请来的内存不用,别的程序也不能用,就好像这块内存泄露出去一样,造成浪费
2015职称计算机考试书PowerPoint2007中 .. 定价:¥45 优惠价:¥42 更多书籍 | |
2015年全国职称计算机考试教材(2007模 .. 定价:¥225 优惠价:¥213 更多书籍 |