C++常见的内存错误及解决方法
(1)内存分配未成功,却使用了它。
解决方法:在使用内存之前先检查指针是否是NULL。如果是用malloc来申请内存,应该用if(p == NULL)或if(p != NULL)进行防错处理。如果是new来申请内存,申请失败会抛出异常,所以应该捕捉异常来进行防错处理。
(2)内存虽然分配成功,但尚未初始化就引用它。
解决办法: 尽管有时候缺省时会自动初始化,但无论什么时候创建对象均要对其进行初始化,即使是赋0值也是不可忽略的。
(3)内存分配成功,但访问越界
解决方法:对数组for循环时要把握越界,否则可能会导致数组越界。
(4)忘记释放内存,导致内存泄漏
解决办法:动态内存的申请和释放必须配对,new-delete和malloc-free其使用次数必须相等。
(5)已经释放内存还在使用它
free或delete后 ,没有将指针设为NULL,产生“野指针”。