指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针,事实上free或delete只是把指针所指的内存给释放掉,但是指针的值还是这块内存的地址,只不过这块内存已经被回收了不能被该进程再使用,下面的例子就是一个典型的使用野指针的案例。建议:free或delete之后将相应的指针设置为NULL 在创建指针变量p...
C++中两种典型方案:1.使用智能指针 2.使用引用 1.智能指针 C++中四种常见的指针:unique_ptr,shared_ptr,weak_ptr,以及C++中已经废弃的auto_ptr。 下面我们根据对象所有权以及对象生命周期分别对这4类进行讲解: 1.auto_ptr auto_ptr要求同时只能有一个指针指向同一个对象,如果有另外一个指针引用了对象,则当前...
C++11引入智能指针来自动管理内存,当智能指针超出作用域时,会自动释放其所管理的内存。以下3种智能指针定义在memory头文件中。 std::shared_ptr:允许多个指针指向同一个对象,内部通过引用计数知道当前对象被几个指针引用,引用计数为0时该对象就会被释放。 1)不要用一个原始指针初始化多个shared_ptr; 2)不要再函...
建议:C++代码代码中多注意使用智能指针 02. 不要使用野指针 野指针也叫悬挂指针,是指向“垃圾”内存的指针,使用“野指针”会让程序出现不确定的行为。 注意,野指针不是NULL指针, 它比NULL指针更容易犯错,因为它不能通过形如 if (NULL == p)的判断语句来预防,只能我们自己...
30 运算符重载案例 10:34 31 友元函数重载运算符 09:36 32 不能在类中重载的运算符 14:26 33 重载()[]运算符 06:38 34 重载前置后置++运算符 07:31 35 智能指针 12:07 36 模拟指针 05:47 37 继承与派生的概念 05:17 39 继承之后 05:22 40 派生类构造析构的顺序 05:34 41 菱...
建议:C++代码代码中多注意使用智能指针 2、不要使用野指针 野指针也叫悬挂指针,是指向“垃圾”内存的指针,使用“野指针”会让程序出现不确定的行为。 注意,野指针不是NULL指针, 它比NULL指针更容易犯错,因为它不能通过形如 if (NULL == p)的判断语句来预防,只能我们自己在写代码时多注意。
P331day15_基础班_05_二级指针做函数形参 21:05 P332day15_基础班_06_快译通案例:概述 07:35 P333day15_基础班_07_快译通案例:单词的存储 28:54 P334day15_基础班_08_快译通案例:单词遍历 05:36 P335day15_基础班_09_快译通案例:释放堆区空间 03:30 P336day15_基础班_10_快译通案例:单词查询 07:53...
使用智能指针:智能指针是一种自动管理内存的机制,可以在适当的时候自动释放内存,从而避免内存泄漏。在C++中,可以使用智能指针来管理动态分配的内存。 7、总结 空间的申请 malloc(size_tsize);//空间申请 calloc(size_tnmemb,size_tsize);//空间块申请
高效的数据结构和算法:例如,在链表和树这样的数据结构中,没有指针就很难实现。 动态内存分配:只有通过指针,我们才能动态地分配或释放内存。 函数参数的灵活性:通过传递指针,我们可以在一个函数内部改变另一个函数中的变量。 这种能力为程序设计带来了巨大的灵活性,但同时也引入了复杂性和潜在的风险(如内存泄漏和野...