1.内存
(1)内存泄露
Memory Leak
即动态申请的内存没有返还给系统。
(2)内存溢出
Out Of Memory OOM
即无法向系统申请到想要的内存。
内存如果不断泄露,最终会导致内存溢出。
(3)内存越界
Heap Corruption
访问超过申请内存的区域。
2.指针
(1)野指针
Wild Pointer
未经初始化的指针,一般的指针没有初始化访问,会访问到一个随机的位置。
(2)空悬指针
Dangling Pointer
指向一段已经释放的内存。
(3)空指针
Null Pointer
即指向nullptr的指针,访问空指针会产生异常导致程序终止。
注意:
①空指针比野指针和空悬指针更好,因为野指针和空悬指针很可能不经意改变了,其他程序的值,导致程序错误。
访问空指针会使得本程序直接终止,避免其他错误,同时也更容易检测。
②智能指针,在未初始化时,值是nullptr,从这一点上来说,它也是更安全的。