锁定老帖子 主题:一个C语言指针问题
精华帖 (1) :: 良好帖 (0) :: 新手帖 (6) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-06-27
最后修改:2011-06-27
一个容易犯的错误
CString ReadSomething() { CString str; str.format(_T("%s"),"abcdef"); return str; } 你会发现有时候是abcdef,有时候是别的东东,这是java程序员写C/C++容易犯的错误 |
|
返回顶楼 | |
发表时间:2011-06-27
感觉 这跟中国的"走进科学"节目一样,
"这个是一个很诡异的C程序" 诡异在何处? 哦,楼主还拿出那么多科学证明过程, 最后的结果是,楼主原来是C语言不好 就像中国西部发生的一件很诡异的事情 一个农民家每天早晨起来都发现鞋子再床上, 经过专家研究,探讨,最后得出结论是,这个农民晚上没洗脚,并且是穿鞋子睡觉的 |
|
返回顶楼 | |
发表时间:2011-06-27
没有分配空间吗?
刚声明完的指针,会指向那个地址呢?这个问题得问编译器。 |
|
返回顶楼 | |
发表时间:2011-06-27
williamy 写道 感觉 这跟中国的"走进科学"节目一样,
"这个是一个很诡异的C程序" 诡异在何处? 哦,楼主还拿出那么多科学证明过程, 最后的结果是,楼主原来是C语言不好 就像中国西部发生的一件很诡异的事情 一个农民家每天早晨起来都发现鞋子再床上, 经过专家研究,探讨,最后得出结论是,这个农民晚上没洗脚,并且是穿鞋子睡觉的 哈哈,lz应该把《c和指针》多看几遍,野指针而已,基础不扎实,觉得什么都诡异。 |
|
返回顶楼 | |
发表时间:2011-06-27
这个如果情况属实,不是野指针这么简单,栈上分配的指针刚好内容是栈上其他变量的地址,这个巧合概率太低
原来以为是优化导致的栈上变量被寄存器替换导致i,p可能用的同一个寄存器,但是实际编译发觉也不可能出现这种情况 |
|
返回顶楼 | |
发表时间:2011-06-27
pujia12345 写道 新手 小白吧
p你只定义了一个指针,没有分配变量空间,运行中无意占用了i的空间。 这都不清楚? 一般这样 char str[128]; char * p=str; strcpy(p,a); 估计是老师教的不好,指针是c语言基础一定要扎实. |
|
返回顶楼 | |
发表时间:2011-06-27
坑爹啊,这C程序写的,一个野指针,你就敢当参数传进去,写内存,还诡异?
|
|
返回顶楼 | |
发表时间:2011-06-27
最后修改:2011-06-27
看到这个帖子让我想起了以前遇到的一个问题!那个问题让我加深了对C语言指针初始化的必要性意识。
首先是定义了一个指针,是忘记了指针初始化。后面经过一系列的操作之后,对该指针进行释放,结果把别的结构体释放掉了一半,这个问题就很奇怪了,被释放的结构体数据错乱了,在经过几天的努力,终于找到了这个问题!当时就真的非常郁闷!后来就习惯性的在定义任何指针的时候都给他置空! 其实LZ这个问题没什么研究的!关于这个指针默认值是怎么分配的,这个和编译器有关,和上下文也有关! |
|
返回顶楼 | |
发表时间:2011-06-27
哎,典型的缓冲区溢出造成的。。。
|
|
返回顶楼 | |
发表时间:2011-06-27
(⊙o⊙)…只是学习过程中碰到的问题做个记录,各位轻拍,还请给新手多一些耐心和指教,不过这个标题的确起的很烂
|
|
返回顶楼 | |