DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2020年1月16日

摘要: 对一个void*类型指针进行delete操作会出错,除非指针所指的内容是简单类型内容,因为这个操作只会释放内存,而不会执行析构函数 下面是一个代码示例: //:BadVoidPointerDeletion.cpp#include <iostream>using namespace std; clas 阅读全文
posted @ 2020-01-16 16:12 DoubleLi 阅读(547) 评论(0) 推荐(0)

摘要: 先来看一段代码 #include <iostream>using namespace std; class A{public: A(){ cout << "A() ...." << endl; } ~A() { cout << "~A()...." << endl; } void func() { 阅读全文
posted @ 2020-01-16 16:10 DoubleLi 阅读(1035) 评论(0) 推荐(0)

摘要: 指针操作是C++开发中必备技能。尽管C++11开始引入了智能指针以缓解普通指针的滥用,但是某些场合必须使用普通指针。释放指针在C/C++编程中非常重要,一般推荐释放指针后立即将指针设置为null,防止出现低级的野指针问题(只能避免低级别的野指针)同时方便调试。 一、C语言时代在C语言编程中,我们由于 阅读全文
posted @ 2020-01-16 16:09 DoubleLi 阅读(3711) 评论(0) 推荐(0)

摘要: 如果我们new出来的指针是一个基本类型,没什么关系,内存还是会被释放的,但是如果是一个类对象指针,在处理过程中转成了void*,那就有问题了,析构函数将不会被调用。故new的指针类型要和delete的指针类型要保持一致。 如下所示: object* p=new object[10]; void* p 阅读全文
posted @ 2020-01-16 16:08 DoubleLi 阅读(551) 评论(0) 推荐(0)

摘要: 一个类对象,当生命周期结束时,该对象会调用自身的析构函数。 一个类的指针,当使用delete函数来删除该指针时,会调用该指针当前类型的析构函数。 比如: classB* pClass = (classB*)new classA;delete pClass; 尽管该指针实际上是classA*类型,但将 阅读全文
posted @ 2020-01-16 16:07 DoubleLi 阅读(1758) 评论(0) 推荐(0)