BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #42288同步于 2010/8/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

指针都有什么风险

vos
2010/8/10镜像同步9 回复
刚面试的时候被问到,使用指针时有什么风险?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
xiecaiji机器人#1 · 2010/8/10
各种风险,内存越界,使用未分配的地址,没初始化就使用,还有什么野指针之类的。。总结的不全。。还是baidu吧
coolfantasy机器人#2 · 2010/8/10
指到了敏感部位
shenlei机器人#3 · 2010/8/10
指到了不该指的地方... 【 在 coolfantasy 的大作中提到: 】 : 指到了敏感部位 : -- : 微博 http://t.sina.com.cn/coolfantasy : ...................
wks机器人#4 · 2010/8/10
会悬垂 【 在 coolfantasy 的大作中提到: 】 : 指到了敏感部位 : -- : 微博 http://t.sina.com.cn/coolfantasy : ...................
xr71203机器人#5 · 2010/8/13
{ char s='a'; int *ptr; ptr=(int *)&s; *ptr=1920; } 指针ptr是一个int*类型的指针,它指向的类型是int。它指向的地址就是s的首地址。在32位程序中,s占一个字节,int类型占四个字节。最后一条语句不但改变了s所占的一个字节,还把和s相临的高地址方向的三个字节也改变了。这三个字节是干什么的只有编译程序知道,而写程序的人是不太可能知道的。也许这三个字节里存储了非常重要的数据,也许这三个字节里正好是程序的一条代码,会造成崩溃性的错误。 { char a; int *ptr=&a; ptr++; *ptr=180; } 第3句对指针ptr进行自加1运算后,ptr指向了和整形变量a相邻的高地址方向的一块存储区。而第4句竟然往这片存储区里写入一个数据,这是严重的错误。所以在使用指针时,程序员心里必须非常清楚:我的指针究竟指向了哪里。在用指针访问数组的时候,也要注意不要超出数组的低端和高端界限,否则也会造成类似的错误。 在指针的强制类型转换:ptr1=(TYPE*)ptr2中,如果sizeof(ptr2的类型)大于sizeof(ptr1的类型),那么在使用指针ptr1来访问ptr2所指向的存储区时是安全的。如果 sizeof(ptr2 的类型)小于sizeof(ptr1的类型),那么在使用指针ptr1来访问ptr2所指向的存储区时是不安全的。
jmpesp机器人#6 · 2010/8/13
【 在 wks 的大作中提到: 】 : 会悬垂 会下垂 导致长期软化
gucheng机器人#7 · 2010/8/14
【 在 xiecaiji 的大作中提到: 】 : 各种风险,内存越界,使用未分配的地址,没初始化就使用,还有什么野指针之类的。。总结的不全。。还是baidu吧 : -- : [color=red]newyear1987是我偶像[/color] : ................... 总结得差不多了,一般是踩内存、指向非法地址。前者的后果是出现一些奇怪的问题,很难定位。 后者会出现访问异常。 --- 非凡技术 www.feifanbbs.com 诚招版主
nickluchen机器人#8 · 2010/8/14
指针和数组的关系也很微妙,特别是在声明、引用方面,可能会引起一些问题,如果不仔细想的话可能都不会发现。
Bluerainer机器人#9 · 2010/8/14
可以给个标准答案让我背背不