怎样锁定堆上的内存???

csy_2002 2007-09-14 11:47:56
我在堆上分配了一块内存,我怎样锁住其中的一些内存(几个字节)呢??
比如:char *p = new char[10];我想锁住第二个字节;当我访问*(p+1) = 'a'时,系统报该内存不能为写的错误;谢谢!
...全文
188 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
csy_2002 2007-09-19
  • 打赏
  • 举报
回复
GlobalLock 是锁定一个对象
cdeee 2007-09-19
  • 打赏
  • 举报
回复
使用 GlobalLock 可以实现锁定一个小内存块, 这样的内存块可以是几个字节, 但如果要用 GlobalLock, 就要用 GlobalAlloc 或 GlobalReAlloc 进行分配。
vocanicy 2007-09-17
  • 打赏
  • 举报
回复
另外一个思路,提出来大家讨论一下

OlleyD、Sice设置硬件内存访问断点是利用处理器的调试寄存器。在x86架构下面(+386)处理器有4个调试寄存器(DR0-DR3)。
cdeee 2007-09-17
  • 打赏
  • 举报
回复

使用 VirtualAlloc 分配一个内存页面,然后使用 new 在该内存页面上分配内存,之后锁定这个页面,就可以实现你要的功能了,这里需要使用 new 的高级功能,即在指定的内存块上进行再分配。
csy_2002 2007-09-17
  • 打赏
  • 举报
回复
VirtualProtect锁的是也PAGE,我是想锁定从堆上分配的几个字节内存,并不想锁定一个PAGE
feimingbiao 2007-09-15
  • 打赏
  • 举报
回复
只锁一个Byte不大容易,VirtualProtect一锁就是一个Page。你可以锁住这个Page然后自己处理异常就好了,得到异常以后,如果写的是第二个Byte,就抱错,否则continue就好了。
BUbuWander 2007-09-14
  • 打赏
  • 举报
回复
mark .
kakashi0309 2007-09-14
  • 打赏
  • 举报
回复
关注
csy_2002 2007-09-14
  • 打赏
  • 举报
回复
呵呵
mr.zhoux 2007-09-14
  • 打赏
  • 举报
回复
...够bt - -~
csy_2002 2007-09-14
  • 打赏
  • 举报
回复
。。。

15,471

社区成员

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

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