大家有没有遇到我这样的怪问题呀!很奇怪的!

killjoy 2003-01-01 08:53:27
我的一个结构中有一个字符串指针,但是当把这个结构指针作为参数传入一个函数时,开始几句还是正常执行的,可是突然这个字符串的指针就乱指了!而且当前执行的根本和这个指针没有关系!

请问是什么问题呢?
...全文
33 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
rtdb 2003-01-02
  • 打赏
  • 举报
回复
> 请问如何检查是否越界呢?

C/C++越界检查是由程序员负责的,
每次对数组和指针操作时,
都要问自己: 可能越界么?
因此要检查每一个可能的语句。
heartthrob 2003-01-02
  • 打赏
  • 举报
回复
是不是char * plabel指想的内容你同事付给了其它的指针,然后那个指针吧这个内容删除了?
killjoy 2003-01-02
  • 打赏
  • 举报
回复
指点一下了!
killjoy 2003-01-02
  • 打赏
  • 举报
回复
请问如何检查是否越界呢?
rtdb 2003-01-02
  • 打赏
  • 举报
回复
典型的内存访问越界。
是由你访问其它变量时越界,
导致指针被无意修改了。

例如:

char s[3] ;
int *p ;

//若执行下面的语句, p就会变了。
s[3] = 5 ;
killjoy 2003-01-02
  • 打赏
  • 举报
回复
代码很多的,公布是不太可能了。不过可以说的是,我的程序执行第一遍的时候是正常的,第二遍就错误了。而且我也把所有可以造成指针值改变的代码都改了。
比如 char * plabel, 这样的一个指针,我已经初始化,并赋值了,但是在执行的过程中,调用一个函数的时候原来的值本来是 plabel="URL1",变成了乱指的值。
align(char *plabel)
{ (1)
int i =0; (2)

} (3)
就像是上面的程序一样,在函数进入的时候,执行到1时,还是正常的,但是到了(2)就不正常了,更严重的是我这个函数已经正常的执行一边。上面的只是举个例子,真正的传入的指针是个结构指针,其中包含了一个字符串指针,出问题的就是那个指针了!
请大家指点一下!
日总是我哥 2003-01-02
  • 打赏
  • 举报
回复



中间插播广告:)哈哈哈

-----------------------------------------------------------------
欢迎访问:http://CoolSlob.fykj.com/
本站◆第一主打:《查询利器》,在这里你可以查询CSDN FAQ---目前唯一可查询的站点(CSDN自身也不支持)
  ◆第二主打:《CSDN精华贴》,在这里你可以看到网友们出奇的搞笑本领;可以看到网友们高深莫测的技术功底:)
  ◆第三主打:《下载专区》,在这里你可以下载到C++ Primer 3rd这样的经典书籍,可以下载到够Inside的《Insdie SQL Server7.0》,前些时候,我本人就是借助这本书来破解MS SQL Server数据库的.mdf和.ldf文件的:)
  ◆只要有大家的支持,网站有可能加入搜索“CSDN精华贴”功能!
azhuguang 2003-01-02
  • 打赏
  • 举报
回复
请把程序公布好吗?否则很难知道是什么问题。也许有代码就可以解决!
bendou16 2003-01-02
  • 打赏
  • 举报
回复
会不会是你的指针类型与所指类型不匹配造成的?
aben456 2003-01-02
  • 打赏
  • 举报
回复
指针初始化了吗
或者使用这个结构的时候NEW 一块内存了吗
hongliang13 2003-01-02
  • 打赏
  • 举报
回复
我不知道,我帮你up! :)
killjoy 2003-01-02
  • 打赏
  • 举报
回复
十分感谢大家的关心和帮助,问题已经解决了,原来是我把已经退栈的数据还在使用,所以造成了栈又被写入的情况了。现在用堆就好了。

一会就结贴!!
sstower 2003-01-02
  • 打赏
  • 举报
回复
其他变量访问越界造成,以前我遇到过,看看你是不是有一个变量它的值是不是一直在增加,比如音频采集,它的数据缓冲区的值就随着采集在增加,到一定时候,如果你分配时分配了一个固定的大小,那么这个就会越界,这将导致其他的变量访问不正确,你仔细看看,是不是这个问题
killjoy 2003-01-02
  • 打赏
  • 举报
回复
这样的越界我还是可以看得出来的,但是我怀疑是不是我的结构指针越界了,就无法检查了么?
rtdb 2003-01-02
  • 打赏
  • 举报
回复
唉, 只能用眼睛看, 或加测试语句。或加断言。

希望你能看出下面的错误:

char s[3] ;

s[3] = 5 ;
strcpy(s, "ABC") ;
point_to 2003-01-02
  • 打赏
  • 举报
回复
还是把关键部分贴出来!
killjoy 2003-01-02
  • 打赏
  • 举报
回复
help me!!!!
killjoy 2003-01-02
  • 打赏
  • 举报
回复
"因此要检查每一个可能的语句."

如何检查?有什么办法么?
killjoy 2003-01-01
  • 打赏
  • 举报
回复
up
killjoy 2003-01-01
  • 打赏
  • 举报
回复
还有就是我的程序在调试中遇到了int 3中断是怎么回事呀?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧