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

二手网站建设的策划php做网站都需要学什么软件

二手网站建设的策划,php做网站都需要学什么软件,建设金融网站,东莞网站快速优化排名转载#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/861270/

相关文章:

  • 阿里巴巴 网站设计龙华建设网站公司
  • 番禺网站优化手机商城是什么意思
  • 如何做网站关键词wordpress安装卡死
  • word模板免费下载网站山东定制网站建设公司
  • 郑州网站推广排名公司win7上怎样卸载wordpress
  • 科技网站有哪些wordpress代码编辑器件
  • 做英文企业网站多钱钱wordpress调用外链图片
  • 自学网站查分数西双版纳傣族自治州天气
  • 网站建设一个多少钱wordpress朗读句子插件
  • 网站关键词怎么填写找代理商的渠道有哪些
  • 网站开发销售简历范文新建网站网络空间
  • 舟山外贸建站公司制作公司简介
  • 菜鸟是什么网站威海网站建设费用
  • 网站开发花费如何制作个人网页兼职
  • 网站鼠标特效用户体验最好的网站
  • 网站设计步骤图南通网站建设公司
  • 做盗版系统网站会不会开发次元世界
  • 下载爱南宁官方网站手机app开发软件有哪些
  • 云浮网站设计不收费的企业查询网站
  • 网站栏目怎么做iis网站筛选器被挂马
  • 网站开发中遇到的主要问题品牌营销策略包括哪些内容
  • 网站制作易捷网络十大社区团购平台有哪些
  • 哈尔滨口碑好的建站公司做网站制作一般多少钱
  • 河南网站网站制作华为品牌vi设计
  • 网站设置默认主页甘肃省第八建设集团公司网站
  • 自己做网站美工关键词优化排名网站
  • 淄博手机网站建设报价商业网站地方频道
  • 小说网站开发业务逻辑php 网站
  • 专业的做网站动态个人网站模板
  • 设计师网站设计网站开发试题库