C/C++|空指针和野指针
空指针 未初始化的指针或者初始化为0的指针
int *ptr_1 = 0;
int *ptr_2 = NULL;
空指针使用*ptr 会报错。
printf("%d\n",*p)
野指针 区别于空指针,野指针指向内存,该内存不可用,并且危险。
形成原因 指针未初始化
任何指针变量被刚创建时不会被自动初始化为NULL指针,它的缺省值是随机的。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。
char* p = NULL;
char* str = (char*)malloc(1024);
指针释放后未置空
【C/C++|空指针和野指针】该指针由于仍然指向某一块内存,即使该内存已经被free或者delete了,该指针的指向依然不变
char *p=new char[10];
//指向堆中分配的内存首地址,p存储在栈区std::cin>> p;
delete []p;
//p重新变为野指针if(p != NULL) std::cout<<"野指针"<
指针操作超越变量作用域
不要返回指向栈内存的指针或引用,因为栈内存在函数结束时会被释放。
char *p=new char[10];
//指向堆中分配的内存首地址
std::cin>> p;
std::cout<<*(p+10);
//可能输出未知数据
推荐阅读
- opencv|opencv C++模板匹配的简单实现
- 爱,为孩子撑起一片空
- 欢觉笑貌(五)
- 走向天空,走向云(小说)3
- C语言学习|第十一届蓝桥杯省赛 大学B组 C/C++ 第一场
- 不理解句意,你还想做对所有GRE填空题()
- 屏幕另一边的纠结
- 【雅静的幸福空间】第60篇《创造快乐》
- 悬疑小故事――空间
- 繁华声遁入空门