诡异的内存错误

jogger007 2010-09-25 03:25:51

int Recver::Set(/* in */char* szFileName,
/* in */char* fileid)
{
...
FileMap* fMap = new FileMap();

// 创建本地文件
if (!CreateLocalFile(m_finfo.filepath, m_finfo.filesize)) return FT_RESULT_ERROR;

fMap->AttachFile(&m_finfo);


// 打开文件内存映射
if (!fMap->OpenMap(FALSE)) return FT_RESULT_ERROR;


// add 2010.09.14
m_mFiles.insert(pair<int, FileMap*>(GetFileIDInt(fileid), fMap));
...}


fMap申请内存在release版本下可以通过,在DEBUG版本下出错,问题就出在new时,而构造函数没有问题。
头大了,希望大家献计献策,帮帮忙
...全文
100 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
jogger007 2010-09-26
  • 打赏
  • 举报
回复
结贴。。。。。。
野男孩 2010-09-25
  • 打赏
  • 举报
回复
得找个工具检查一下,多半是之前的什么地方释放内存的时候出错了,或者是内存操作越界修改了堆的维护信息。
zgl7903 2010-09-25
  • 打赏
  • 举报
回复
memset(m_fName, 0, FT_FILENAME_SIZE);
把屏蔽了看看
arong1234 2010-09-25
  • 打赏
  • 举报
回复
只要你做好数据结构的并发保护,就不会有问题.估计你锁没有用对,或者根本没用锁[Quote=引用 13 楼 zhaoxueqian1988 的回复:]
引用 11 楼 arong1234 的回复:
怀疑1:使用了多线程,并存在并发保护不力
怀疑2:存在内存访问越界,破坏了堆结构

确实使用了多线程,谁知道成了脱缰野马了。。。
[/Quote]
jogger007 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 arong1234 的回复:]
怀疑1:使用了多线程,并存在并发保护不力
怀疑2:存在内存访问越界,破坏了堆结构
[/Quote]
确实使用了多线程,谁知道成了脱缰野马了。。。
cpp2017 2010-09-25
  • 打赏
  • 举报
回复
怀疑1:使用了多线程,并存在并发保护不力
怀疑2:存在内存访问越界,破坏了堆结构
===>
同意.
arong1234 2010-09-25
  • 打赏
  • 举报
回复
怀疑1:使用了多线程,并存在并发保护不力
怀疑2:存在内存访问越界,破坏了堆结构
cpp2017 2010-09-25
  • 打赏
  • 举报
回复
FileMap中有没有变量是自定义的类的?如果有,检查一下他们的构造函数,

如果没有的话,那可能是哪个地方编译的不对了,全部清除重新编译看看.
jogger007 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cpp2017 的回复:]
在进入构造函数以前就报错了
==>那它的父类呢?
[/Quote]
它并没有父类
class FileMap
{
public:
...
}
cpp2017 2010-09-25
  • 打赏
  • 举报
回复
在进入构造函数以前就报错了
==>那它的父类呢?
lijianli9 2010-09-25
  • 打赏
  • 举报
回复
FileMap是个什么类,继承自哪里?debug跟从到构造函数,一直到基类中.....
jogger007 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cpp2017 的回复:]
构造函数有代码么?贴出来看看.
[/Quote]
在进入构造函数以前就报错了
jogger007 2010-09-25
  • 打赏
  • 举报
回复

FileMap::FileMap()
{
memset(m_fName, 0, FT_FILENAME_SIZE);
m_hMap = 0;
m_ulOffset = 0;
m_ulReaded = 0;
m_bComplete = false;

m_nID = 0;
m_hFile = 0;
m_hMap = 0;
m_pMap = 0;
m_ulSize = 0;
m_bytes = 0;
}

cpp2017 2010-09-25
  • 打赏
  • 举报
回复
构造函数有代码么?贴出来看看.
jogger007 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 visualeleven 的回复:]
出什么错?
[/Quote]
还有可能是:应用程序发生异常未知的软件异常(0x0aadfade)
jogger007 2010-09-25
  • 打赏
  • 举报
回复
该内存不能为“Read”。
Eleven 2010-09-25
  • 打赏
  • 举报
回复
出什么错?
依托Android最新的主流平台为Android4.0,面向最新的SDK和相关工具,同时还涵盖了老版平台中的一些常用功能,以帮助开发人员适应目前市面上所有的主流设备。《Android移动应用开发(第3版)卷Ⅰ:基础篇》涵盖了作者数年来在移动开发领域所积累的经验,以及成功进行移动项目开发所需的全部概念和实用技术,包括移动开发过程与传统软件开发的区别,还包括帮助你节约宝贵时间和规避隐患的技巧。不管你的项目有多大规模,《Android移动应用开发(第3版)卷Ⅰ:基础篇》都能为你提供帮助。 内容推荐   《Android移动应用开发(第3版)卷Ⅰ:基础篇》涵盖了Android开发从概念、技术到市场推广应用的全部主题,内容包括Android平台概览、Android应用程序设计精髓、Android用户界面设计精髓、Android应用程序设计精髓、对外发布你的Android应用程序和附录6个部分。附录还包含了Android开发常用工具(模拟器、DDMS和Eclipse)的使用指南。   《Android移动应用开发(第3版)卷Ⅰ:基础篇》卷Ⅰ以及本书的卷Ⅱ,不仅适合Android应用程序开发人员阅读,还能为QA测试人员提供指导。另外,本书还可以帮助项目经理更好地管理项目进程和项目团队,帮助市场推广人员更好地把握市场,创造令人瞩目的销售业绩。 作者简介 Lauren Darcey LaurenDarcey是一家专注于移动开发的软件公司的技术主管,所涉及的技术包括Android、iPhone、Blackberry、PalmPre、BREW和J2ME,还包括咨询服务。拥有20年专业软件产品研发经验的Lauren被公认为企业架构和商业级移动应用开发的权威。Lauren获得了加州大学圣克鲁兹分校授予的计算机科学专业学士学位。Shane Conder ShaneConder拥有丰富的开发经验,在过去的10年中,他把主要精力集中在移动和嵌入式开发领域,迄今已设计并开发了基于Android、iPhone、BREW、Blackberry、J2ME、Palm和WindowsMobile的诸多商业软件。Shane撰写了大量关于移动通信行业和评估移动开发平台的文章,这些文章发表在他的个人技术博客上,在业界受到了广泛的关注。Shane获得了加州大学授予的计算机科学专业学士学位。 目录 第一部分 Android平台概览 第1章 Android简介  第一部分 Android平台概览 第1章 Android简介  第2章 搭建你的Android开发环境  第3章 编写第一个Android应用程序  第4章 掌握Android开发工具  第二部分 Android应用程序设计基础 第5章 剖析Android应用程序  第6章 使用Android Manifest文件定义应用程序  第7章 管理应用程序资源  第三部分 Android用户界面设计精髓 第8章 探索用户界面屏幕元素  第9章 使用布局设计用户界面  第10章 使用Fragment  第11章 使用对话框  第四部分 Android应用程序设计精髓 第12章 使用Android首选项  第13章 使用文件和目录  第14章 使用内容提供器  第15章 设计高兼容性应用程序  第五部分 对外发布你的Android应用程序 第16章 移动软件开发过程  第17章 设计和开发"防弹"Android应用程序  第18章 测试Android应用程序  第19章 发布你的Android应用程序  第六部分 附录 附录A Android模拟器快速入门  A.1 模拟器的目的:虚拟现实  A.2 使用Android虚拟设备(AVD)  A.2.1 使用Android SDK和AVD管理器  A.2.2 创建AVD  A.3 使用指定AVD启动模拟器  A.3.1 维持模拟器高效运行  A.3.2 配置模拟器启动项  A.3.3 启动模拟器运行应用程序  A.3.4 从Android SDK和AVD管理器中启动模拟器  A.4 配置模拟器的GPS位置信息  A.5 在两个模拟器实例之间拨打电话  A.6 在两个模拟器实例之间发送消息  A.7 通过控制台与模拟器交互  A.7.1 使用控制台模拟来电  A.7.2 使用控制台模拟短消息  A.7.3 使用控制台发送GPS坐标  A.7.4 使用控制台监视网络状态  A.7.5 使用控制台操作电源设置  A.7.6 使用其他控制台命令  A.8 享受模拟器  A.9 认识模拟器的局限  参考资料和更多信息  附录B Android DDMS快速入门  B

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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