一,对空指针的访问
再贴多一种类似情况,对指针解引用后,操作不属于自己的内存空间(0地址),0地址是不准许
访问的!!!
二,对只读空间的修改
一种情况是这样的,对只读空间进行修改,也是不允许的,一改就会出错!!!直接崩溃
另外一种就是使用了strcpy强行改变了常量字符串的内容
这种就比较隐蔽了。。。单步调试是一种神器?
三,动态内存二次free/delete
我用C++写了链表类,然后将两个链表合并为1个,简单的将第一个链表的尾指针指向了第二个链表的头指针,然后
析构了第二个链表之后,又析构了第一个合并后的链表
,造成了非常隐蔽的double free,令我十分不解,
单步调试也发现不了问题,后来直接打印所有节点的地址,
恍然大悟!!!是二次free,简直了!!!
第一张图是有问题时的情况:
释放的内存地址0083E8A8被释放了2次,第一次释放是析构输出的第一行,第二次是析构输出的最后一行
第二张图解决了问题
四,free/delete了非动态内存
其他人讲的,具体我也没亲历过。。。
更具体的晚点更新。。。