一个关于野指针的问题

来源:百度知道 编辑: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指向的内存是不确定的.

看到你这问题我想起小学语文阅读理解,全是这种问题。。

他们说的“垃圾内存” 就是指没分配给你这个指针的内存, 没什么特点

说这个危险是因为你没什么合理的办法判断它的值是不是有效的,因为他毕竟指向一个地方,又没有任何标记表明这个地方是不是合理分配来的。 如果你用它并且它确实没指向合适的地方,那么你的程序基本上就完了

上面的说的“更改其他程序的内存空间”是不会的, 现在已经是虚拟内存时代了。。。