C++之delete常见错误总结
【摘要】 1、动态分配内存后释放了一次,再次释放
1)直接删除2次
int main(){ int *a = new int(50); cout<<*a<<endl; delete a; delete a; return 0;}
2)另外一个指针指向分配的内存,然后把这个2个指针都删除
int* p1 = new i...
1、动态分配内存后释放了一次,再次释放
1)直接删除2次
-
int main()
-
{
-
int *a = new int(50);
-
cout<<*a<<endl;
-
delete a;
-
delete a;
-
return 0;
-
}
2)另外一个指针指向分配的内存,然后把这个2个指针都删除
-
int* p1 = new int(50);
-
int* p2 = p1; //p2和p1 现在指向同一内存地址
-
cout << *p1 << endl;
-
cout << *p2 << endl;
-
delete p1; //OK
-
delete p2; //ERROR! p2所指的内存,已通过delete p1而被释放,不可再delete一次
-
2、删除是一个普通指针或者不是一个指针
1)删除的是一个普通指针
文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。
原文链接:chenyu.blog.csdn.net/article/details/63702336
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)