Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1117回复:7

ExFreePool的疑问。

楼主#
更多 发布于:2002-06-12 17:55
VOID ExFreePool( PVOID p) 是ExFreePool原型,无法根据返回值来看是否释放内存成功。
我分配的内存是自己维护的一个链表,我发现当我调用ExFreePool释放链表中指针所指向的内存(由ExAllocatePool分配的)时,指针所指的字符串在SOFTICE WATCH窗口中显示没有被删掉。这正常吗?
Tom_lyd
fkddn
驱动小牛
驱动小牛
  • 注册日期2002-03-28
  • 最后登录2005-11-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-06-12 17:59
我认为释放内存的意义是你的程序不可以访问这块内存了,不是内存被清空的意思吧……  :(
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-06-12 18:10
我没有反汇编调试进去,然而在C++中的new 和 delete是会清空内存的,所以我担心内存没有被真正地释放。
Tom_lyd
leaf
驱动牛犊
驱动牛犊
  • 注册日期2002-05-21
  • 最后登录2004-01-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-06-12 18:28
不同的系统有不同的内存管理算法吧.如果我们来实现ExFreePool,最简单就是将控制区数据修改,对用户数据区部分不做任何处理.
不同的类new和delete不一样,而且你还可以重载.我想不能拿他们做标准.
所以我想fkddn的想法是对的.
希望有帮助.

guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-06-13 09:51
呵呵!释放内存不一定就会把那部分内存的内容填0,在系统里面应该有一个链表之类的东西来维护内存的使用情况的,应该有一个标记标明该块内存是否正在被使用
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-06-13 10:10
之所以有这样的疑问是因为,在释放有些内存的时候,我却发现其相应的内容被清掉了,但不是0.同样是使用ExFreePool
Tom_lyd
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2002-06-13 10:21
赞同fkddn的看法。
magicx
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2014-08-18
  • 粉丝1
  • 关注0
  • 积分-14分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-06-13 11:50
之所以有这样的疑问是因为,在释放有些内存的时候,我却发现其相应的内容被清掉了,但不是0.同样是使用ExFreePool


个人感觉是:

一般是的第一个字或字节改变为无效的指针(地址空间)。。。。。。。。。。。。

其内容不一定改变。。。。

 :)

另:
偶对此类如:“VOID ExFreePool( PVOID p) 是ExFreePool原型,无法根据返回值来看是否释放内存成功。 ”

等无返回值的,就认为其成功,不成功则是自己指针的问题。。。。。(不得已也。:()

”应该有一个标记标明该块内存是否正在被使用“---这也不是个好办法。。。。

这些都是我个人的坏习惯。。。。。。。。。

 :P

[编辑 -  6/13/02 by  magicw]
[color=red]大头鬼! :P[/color]
游客

返回顶部