当所指向的对象被释放或者收回,但是对该指针没有作任何的修改,以至于该指针仍旧指向已经回收的内存地址,此情况下该指针便称悬垂指针(也叫迷途指针)。Dangling pointer
某些编程语言允许未初始化的指针的存在,而这类指针即为野指针。 Wild Pointer
首先是空指针判断之类的,防止引用空指针这都很简单。
最主要的是指针带来的内存泄露的问题。先看什么时候会销毁
智能指针,太秀了
shared_ptr<template T> a = make_shared<T>();
在对象的生命周期结束后会自动释放
一个良好的习惯:释放一个指针后,需要把指针赋值为nullptr
防止再次delete这个指针导致错误,(undefined behavior)
c++ : delete
c: free
#include<iostream>
#include<memory>
using namespace std;
class A{
public:
A(){
cout << " constructing" << endl;
}
~A(){
cout << "destructing" <<endl;
}
};
void f(){
//A a = A();
A *ap = new A();
delete ap;
//ap = nullptr;
delete ap;
//shared_ptr<A> smart = make_shared<A>();
}
int main(){
f();
return 0;
}