锁定老帖子 主题:一个C语言指针问题
精华帖 (1) :: 良好帖 (0) :: 新手帖 (6) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-06-27
野指针本来就不可预料吧
|
|
返回顶楼 | |
发表时间:2011-06-27
所有的指针都要初始化,没有初始值,也需要设NULL,不然后患无穷啊
|
|
返回顶楼 | |
发表时间:2011-06-28
ray_linn 写道 2. t根本就是未分配的地址,这样的拷贝根本随编译器的开心在任一地址中乱写。 微软vc的保护函数在这一方面做出了改进,但是可惜没有成为标准,否则用strcpy_s就能预防这种情况。glibc就比较陈旧了。
讨厌的地方是总提示 strcpy deprecated ... 有时我就是想用 strcpy 啊 ... |
|
返回顶楼 | |
发表时间:2011-06-28
night_stalker 写道 ray_linn 写道 2. t根本就是未分配的地址,这样的拷贝根本随编译器的开心在任一地址中乱写。 微软vc的保护函数在这一方面做出了改进,但是可惜没有成为标准,否则用strcpy_s就能预防这种情况。glibc就比较陈旧了。
讨厌的地方是总提示 strcpy deprecated ... 有时我就是想用 strcpy 啊 ... 这个warning是可以屏蔽的吧,不过我还是会尽量用_s,至少可以防止缓冲区溢出。 |
|
返回顶楼 | |
发表时间:2011-06-29
rokuan 写道 liusondark 写道 为什么我用VC++运行不了
不太清楚,vc我不太会用,还是比较习惯gcc编译,C Free用的比较顺手 lz有zb的嫌疑 |
|
返回顶楼 | |
发表时间:2011-06-29
地狱牢笼 写道 rokuan 写道 liusondark 写道 为什么我用VC++运行不了
不太清楚,vc我不太会用,还是比较习惯gcc编译,C Free用的比较顺手 lz有zb的嫌疑 |
|
返回顶楼 | |
发表时间:2011-06-30
最后修改:2011-06-30
野指针,值是不可预测的。
不过由于函数堆栈是向上增加的。所以。 char x[]="abcde" char *p; 打印p的值,很可能吧x的值打印出来了。 函数一开始为函数内部变量分配内存。 比如 上述,sp-7 那么p的地址是 ebp-4 x的地址是ebp-5 由于printf是顺序打印的所以会导致这个原因吧。。。 以上用IDA反汇编一下,可以清楚的看到。 |
|
返回顶楼 | |
发表时间:2011-06-30
chimer 写道 野指针本来就不可预料吧
一些好的编程习惯可以避免野指针 |
|
返回顶楼 | |
发表时间:2011-06-30
最后修改:2011-06-30
学习和研究态度都不错,很有潜力,给你投个精华。
|
|
返回顶楼 | |
发表时间:2011-07-07
做c的要是技术不扎实那是很危险的
|
|
返回顶楼 | |