社区
C语言
帖子详情
什么是野指针?
catamout
2010-06-21 02:17:13
请问什么是野指针?
char *str = "abc";
这样定义会出问题吗?
...全文
183
8
打赏
收藏
什么是野指针?
请问什么是野指针? char *str = "abc"; 这样定义会出问题吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xsywit
2011-08-17
打赏
举报
回复
讲的挺好的
catamout
2010-06-22
打赏
举报
回复
谢谢大家... 哈哈 我明白了
ForestDB
2010-06-21
打赏
举报
回复
空有指针,没有指向的指针。
LZ的声明没问题。
jackyloncoln
2010-06-21
打赏
举报
回复
“野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。野指针的成因主要有两种: 一、指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。 二、指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针。别看free和delete的名字恶狠狠的(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。通常会用语句if (p != NULL)进行防错处理。很遗憾,此时if语句起不到防错作用,因为即便p不是NULL指针,它也不指向合法的内存块。例: char *p = (char *) malloc(100); strcpy(p, “hello”); free(p); // p 所指的内存被释放,但是p所指的地址仍然不变 if(p != NULL) // 没有起到防错作用 strcpy(p, “world”); // 出错 另外一个要注意的问题:不要返回指向栈内存的指针或引用,因为栈内存在函数结束时会被释放。
huanmie_09
2010-06-21
打赏
举报
回复
[Quote=引用楼主 catamout 的回复:]
请问什么是野指针?
char *str = "abc";
这样定义会出问题吗?
[/Quote]
这样定义并初始化指针是没有问题的。
但要注意的是指针str指向的是静态数据区的字符串字面值"abc";
因此任何尝试修改通过str指针来修改字符串字面值的操作都是不合法的, 如:
str[1] = 'k'; //error;
这条语句相当于:
const char *str = "abc";
野指针的成因主要有两种:
1、指针变量没有被初始化, 如:
char *str;
scanf("%s", str); //指针未初始化,野指针.
2、指针指向的堆内存被free或者delete之后,没有置为NULL,这时该指针也可以看成是野指针.如:
char *str = (char *)malloc(100*sizeof(char));
strcpy(str, "abc");
free(str); // str所指的内存被释放,但是p所指的地址仍然不变
if(str != NULL) // 没有起到防错作用
strcpy(str, "akk"); // 出错
bitxinhai
2010-06-21
打赏
举报
回复
int *p = new int;//为指针分配空间
.......
delete p;//删除指针,但是没有赋值为空
if(NULL != P)
*p = 20;//继续使用指针
lylm
2010-06-21
打赏
举报
回复
char *str = "abc";
》》这个没有问题,str指向全局存储区
lylm
2010-06-21
打赏
举报
回复
野指针就是你动态分配后,释放了,一般还要赋值成NULL,如果不的话,就产生野指针
什么是
野指针
?如何避免
野指针
?
野指针
不是 NULL指针,它是随即指向一块内存的指针。
野指针
是很危险的,会导致内存泄漏,if语句对它不起作用。 导致
野指针
的原因有两种: (1)
野指针
指向了一块没有访问权限的内存。(即指针没有初始化) (2...
面试题:什么是
野指针
?产生
野指针
的原因?
一、什么是
野指针
野指针
是指向位置随机的、不正确的指针,系统无法对其进行操作; 二、
野指针
的危害
野指针
指向的位置是随机的, 危害也是随机的,不一定会产生错误。若程序产生错误,一般为内存泄露导致程序中断。...
【面试题】【C++】什么是
野指针
?
野指针
是如何产生的?如何避免
野指针
?
野指针
是指指向的位置是随机的、不可知的、不正确的。
什么是
野指针
?
野指针
的危害?如何避免
野指针
?
什么是
野指针
?
野指针
是指随机指向一块内存的指针
野指针
的危害?
野指针
可能会造成内存泄露的危害。(注意:
野指针
不会一定造成内存泄露,如果该
野指针
指向的内存刚好是某个变量的地址,那么
野指针
也能使用这块...
【C++学习笔记】什么是
野指针
?如何避免它的出现?
指向非法的内存地址指针叫作
野指针
(Wild Pointer),也叫悬挂指针(Dangling Pointer),意为无法正常使用的指针。 2.出现
野指针
的常见情形 2.1使用未初始化的指针 出现
野指针
最典型的情形就是在定义指针...
C语言
69,373
社区成员
243,079
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章