MSVCR90分配的8192大小内存是什么

berkowitz 2010-05-11 10:28:50
在调试程序的过程中(VC6编译器,c++语言),发现BoundsChecker有时候会报告内存越界(Dynamic memory overrun)。说是向8192大小的buffer拷贝一段17490大小的数据导致越界。但是很显然这块内存分配的时候大小明显不只这么一点,而且检查buffer指向的内存,从buffer前面表示buffer大小的几个字节看也是正确的。观察内存的分配历史,发现MSVCR90有在相同的位置分配8192大小的数据,所以我认为BoundsCheck一定是以这个8192作为它判断的依据了。可是有人知道这个8192大小的buffer应该是做什么用的吗?什么情况下我用malloc分配出来的内存会与其吻合呢?
还有一个现象,就是这个出问题的buffer它分配出来的内存地址与其他的有一定的差距,似乎是不应该在这种地址空间中出现,有没有办法知道分配内存是否超出了线程可以分配的地址空间呢?望知道任何知道一点线索的达人不吝赐教!谢谢!
...全文
84 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
berkowitz 2010-05-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 berkowitz 的回复:]
在调试程序的过程中(VC6编译器,c++语言),发现BoundsChecker有时候会报告内存越界(Dynamic memory overrun)。说是向8192大小的buffer拷贝一段17490大小的数据导致越界。但是很显然这块内存分配的时候大小明显不只这么一点,而且检查buffer指向的内存,从buffer前面表示buffer大小的几个字节看也是正确的。观察内存的分配历史,发现MSVCR90……
[/Quote]
还有就是我是vc6的程序,是不是根本就不该用到MSVCR90的东西?

6,873

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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