delete常见错误总结
1、动态分配内存后释放了一次,再次释放
①直接对同一个指针连续delete两次#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; int main(void) { int* arr = new int[10]; delete[]arr; delete[]arr; system("pause"); return 0; }②两个指针指向同一块内存,分别delete这两个指针
#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; int main(void) { int* arr = new int[10]; int* arr2 = arr; delete[]arr; delete[]arr2; system("pause"); return 0; }2、delete掉的是一个普通指针或者不是一个指针 ①delete掉的是一个普通指针
#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; int main(void) { int a = 10; int* p = &a; delete p; system("pause"); return 0; }②delete非指针
#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; int main(void) { string ss = "hello"; delete ss; system("pause"); return 0; }3、删除了由系统释放的指针
#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; int main(void) { int* p = NULL; int arr[50]; p = arr; delete[] p; system("pause"); return 0; }4、删除动态分配的指针的时候没有指向最初的地址
#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; int main(void) { int* p = new int[4]; p++; delete[] p; system("pause"); return 0; }
最后,来一张崩溃的BUG神图:
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇: 二维数组下标的含义