一个关于野指针的问题
来源:百度知道 编辑:UC知道 时间:2024/06/04 00:26:26
网上说“野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。
我想问下什么是“垃圾”内存,“垃圾”内存有什么特点,为什么说野指针很危险
我想问下什么是“垃圾”内存,“垃圾”内存有什么特点,为什么说野指针很危险
举个例子.
char *p = "123";
*(p+6)就是一个野指针.
垃圾内存你可以理解成对于你的程序来说无用的存储空间.但是对于你的程序无用,并不能说那就是垃圾,操作野指针可能会更改系统其他程序的内存空间,也许你的机器会有一些莫名其妙的动作哦.
就甭管“垃圾”内存了
告诉你什麼叫 野指针
比如:
char *p;
printf("%c", *p);
char *s = malloc(1);
free(s);
printf("%c", *s);
这两种情况下,p指向的内存是不确定的.
看到你这问题我想起小学语文阅读理解,全是这种问题。。
他们说的“垃圾内存” 就是指没分配给你这个指针的内存, 没什么特点
说这个危险是因为你没什么合理的办法判断它的值是不是有效的,因为他毕竟指向一个地方,又没有任何标记表明这个地方是不是合理分配来的。 如果你用它并且它确实没指向合适的地方,那么你的程序基本上就完了
上面的说的“更改其他程序的内存空间”是不会的, 现在已经是虚拟内存时代了。。。