当前位置: 首页 > news >正文

南阳开网站制作比较酷炫的企业网站

南阳开网站制作,比较酷炫的企业网站,凡科网是干嘛用的,个人网站建设步骤转载#xff1a;https://blog.csdn.net/kuimzzs/article/details/81517451 很多时候#xff0c;一些定义在类内的变量的生命周期在类外并不是很好的掌控#xff0c;这样就很容易造成内存泄漏得到问题 比如以下代码#xff1a; class Test { public: void foo(); pri…转载https://blog.csdn.net/kuimzzs/article/details/81517451 很多时候一些定义在类内的变量的生命周期在类外并不是很好的掌控这样就很容易造成内存泄漏得到问题 比如以下代码 class Test { public:     void foo(); private:     char *p; };   void Test::foo() {     p new char[50]; }   int main() {     Test t1;     t1.foo();     return 0; } 这是一个很典型的例子new到的堆上空间并没有主动释放即使程序结束也不会自动清除(不过现在操作系统比较高级会强制返还程序运行前的内存....但这并不是我们不养成良好习惯的理由)。 那么这时候在析构函数中加入delete[] p就是个很好的习惯。 那么正题来了如果我们在成员函数中delete自己会怎么样 delete this 下面通过代码来看 class Test { public:     Test(int _x);     void foo();     void show();     void show(int); private:     int x; };   Test::Test(int _x) :x(_x) { }   void Test::show() {     cout “x ” x endl; }   void Test::show(int) {     cout this is show int endl; }   void Test::foo() {     delete this; }   int main() {     Test *t1 new Test(5);     cout before endl;     t1-show();     t1-foo();     cout after endl;     //t1-show();     t1-show(1);     system(pause);     return 0; } 首先编译。结果是通过证明在成员函数中调用delete this 并没有语法错误。 接下来运行现在after后调用show(int)看delete this之后还能否调用成员函数。 结果如下图 可以看到delete this之后该对象的成员函数还能调用。 那么我们接下来就再次调用show()函数来看delete this 之后该对象中值释放还在。 结果如下图 从结果来看x已经变成随机值看来对象内存空间的确是被释放了。 总结 在类的成员函数可以调用delete this并且delete this之后还可以调用该对象的其他成员但是有个前提被调用的方法不涉及 这个对象的数据成员和虚函数。 当一个类对象声明时系统会为其分配内存空间。在类对象的内存空间中只有数据成员和虚函数表指针并不包含代码内 容类的成员函数单独放在代码段中。在调用成员函数时隐含传递一个this指针让成员函数知道当前是哪个对象在调用它。 当 调用delete this时类对象的内存空间被释放。在delete this之后进行的其他任何函数调用只要不涉及到this指针的内容都 能够正常运行。一旦涉及到this指针如操作数据成员调用虚函数等就会出现不可预期的问题即上面出现的随机值。 为什么会出现这种情况delete this之后不是释放了类对象的内存空间了么那么这段内存应该已经还给系统不再属于这个 进程。照这个逻辑来看应该发生指针错误无访问权限之类的令系统崩溃的问题才对啊这个问题牵涉到操作系统的内存管理 策略。delete this释放了类对象的内存空间但是内存空间却并不是马上被回收到系统中可能是缓冲或者其他什么原因导致 这段内存空间暂时并没有被系统收回。此时这段内存是可以访问的你可以加上100加上200但是其中的值却是不确定的。当 你获取数据成员可能得到的是一串很长的未初始化的随机数访问虚函数表指针无效的可能性非常高造成系统崩溃。 而若是在析构函数中呢delete this会去调用本对象的析构函数而析构函数中又调用delete this形成无限递归造成 堆栈溢出系统崩溃。
http://www.zqtcl.cn/news/215181/

相关文章:

  • 视频微网站开发谷歌怎么做网站推广
  • 微信公众号服务号网站开发流程网站推广网络
  • 徐州网站建设技术wordpress 分辨 模版
  • 慈溪企业网站建设公司wordpress网盘搜索引擎源码
  • 建筑类企业网站模板怎么制作网站链接
  • 常州网站建设外包襄阳做网站的
  • 临清网站优化用jsp做网站的感想
  • 个人工作室网站网站备案 万网
  • 网络推广模板网站会员管理软件
  • 西乡塘网站建设网站建设公司的成本有哪些方面
  • 在哪里可以学习做网站西安制作公司网站的公司
  • 网站建设 更新 维护淮北矿业工程建设公司网站
  • 网站开发 平台宝应做网站
  • 网站开发开题报告广州的兼职网站建设
  • 辽宁同鑫建设网站网站后期维护费用
  • 政法网站建设有哪些不足广州网站建设信息科技有限公司
  • 营销型网站 平台海口智能建站价格
  • 网站空间过期电商网站建设比较好的
  • seo公司 彼亿营销舆情优化公司
  • diango是做网站的后端吗网页怎么做成app
  • 思勤传媒网站建设公司如何查询网站的外链
  • 网站设计思路文案范文专业手机网站建设多少钱
  • 有部分网站打不开网站服务内容怎么写
  • 百度安全网站检测好看的免费的小说网站模板
  • 锡山区住房和城乡建设局网站免费ppt模板下载简约
  • 建设银行 杭州招聘网站建设工程有限公司是干什么的
  • 做网站必须购买空间吗?3点新闻发布
  • 济南集团网站建设流程东莞做网站公司首选
  • 有需要做网站推广找我网站怎么 备案
  • 怎么把网站放到服务器上站长工具seo综合查询外部链接数量