3118|6

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

奇怪问题,一读文件,指针就改变了,大家帮忙看看 [复制链接]

如下
//我传递了一个类对象的指针近进来
LoadForm(CFormInfo *pInfo)
{
//此时pInfo 值为0x1a04fd84
//--------------
   R_Form_Info finfo;
   memset(&finfo,0,sizeof(R_Form_Info));
    m_RF.Seek(nFormOffset,CFile::begin);
//读文件
    m_RF.Read(&finfo,nFormDataLen);
////pInfo 值变成了0xcdcdcdcd 会出现异常
   pInfo->nSrBmpID = finfo.dwBkBmpID;

}
请问究竟是哪里引起的,什么原因啊,仔细检查了代码,都初始化了 没发现什么野指针啊

最新回复

接上: pInfo的内容被无辜修改。  详情 回复 发表于 2008-3-1 17:04
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
是不是外面用pInfo这个指针了?
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
pInfo对象初始化了直接拿过来装载数据
而且是一个单线程 不可能被外面调用
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
//读文件 这么关键的操作竟然没有贴出来
问题应该就出在读文件这里.

 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

5
 
可以试试
LoadForm(CFormInfo * const pInfo)

另外:
由于代码比较简单,你可以逐行测试的。
把pInfo-> nSrBmpID   =   finfo.dwBkBmpID;
前面的代码全部注释,然后一行行的增加看是哪个部分出的问题。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

6
 
nFormDataLen没看到你赋值啊。。(nFormDataLen应当=sizeof(finfo)才行吧)
可能是个很大值哦。
而finfo是临时变量,在堆栈里头的,
pInfo这个指针本身也正好是在堆栈里头,并且地址比&finfo高一点点,

所以一旦
m_RF.Read(&finfo,nFormDataLen);
堆栈就被破坏了。
 
 
 

回复

95

帖子

0

TA的资源

一粒金砂(中级)

7
 
接上:
pInfo的内容被无辜修改。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表