请教debug和release的问题

j_s_p 2008-08-26 10:51:37
我写了一个程序,采用共享内存,从数据库中将部分记录读入共享内存,debug版本运行时没有问题,release版本运行时出现该内存不能为“read”错误,而release版本采用MFC静态库编译程序正常运行,请问这是什么原因?
...全文
137 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cricketol 2008-08-31
  • 打赏
  • 举报
回复
学习了
nostopping 2008-08-30
  • 打赏
  • 举报
回复
学习了...
yangz830419 2008-08-28
  • 打赏
  • 举报
回复
debug版本是调试版本,会保留尽可能多的源程序信息,但release版本是发布版,编译时会将代码做大量优化以减小可执行文件的体积,所以release下经常容易出一些问题,要注意debug下有没有warning,尤其是指针的初始化、销毁之类的问题,还有字符串数组等,具体原因有很多的。
yanghao58686763 2008-08-26
  • 打赏
  • 举报
回复
楼主,我不知道您的程序具体是怎么样的,不过我有个想法:
在window保护模式下写内存的时候,debug版本没有问题,但是release版本会出现内存不可写的现象。
这个时候就要修改内村页的属性为可读写。
如果是上述问题,建议用VirtualQuery(); VirtualProtect();这两个函数来修改指定内存页属性。
xunfeng_2008 2008-08-26
  • 打赏
  • 举报
回复
学习一下
j_s_p 2008-08-26
  • 打赏
  • 举报
回复
但是我在release版本下将MFC的动态使用改为静态使用就可以了?这是什么原因?
gaoteng1984 2008-08-26
  • 打赏
  • 举报
回复
程序是在运行到哪里出的错?是不是非法内存访问了?
是在不行,就将release版本的配置,一点一点的修改,向debug版本的配置进行靠拢。每改一点,就运行一次,如果运行正常,则证明错误就出在刚才刚改的这个配置上面。
  • 打赏
  • 举报
回复
引起内存不能read的错误很多,要么自己调试,要么给出更详细的信息

15,466

社区成员

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

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