![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++::std
文章平均质量分 50
DefineFalseTrue
这个作者很懒,什么都没留下…
展开
-
进一步理解C++中的堆(Heap)
由于最近接了一个Artemis Finland的项目,涉及到Heap Corruption的问题,所以对堆要有更深的理解。现整理我个人对于c++中堆的进一步理解如下。常用的分配函数有VirtualAlloc和HeapAlloc.VirtualAlloc请求4K为边界的整块内存,HeapAlloc分配任意大小的内存块。但后者是依赖前者实现的。也就是说在操作系统的层面上管理内存的最小单位是4K。要实现更小的内存管理(即HeapAlloc),需要用户态的程序自己去分配,比如说Windows的HeapManager原创 2010-09-28 00:06:00 · 583 阅读 · 0 评论 -
堆调试利器-Pageheap
刚刚花了一个星期磨出一来一个Planet的*.prj类型的一周项目,感觉收获很大,特此作出分享. 此项目是要解决一个Heap Corruption的问题,但是我们知道,通常情况下,当我们在堆中分配了一段内存,尽管在使用过程中可能出现了越界操作,但是系统在越界的一瞬间常常并不直接报错,而是在最后delete 时抛出一个Heap Corruption。这是因为操作系统的堆分配粒度是一个4k,若内存越界不是刚好在那个4k边界上,并不会引起操作系统的警觉而报错。 如果我们只是在Heap Corru原创 2010-10-12 20:12:00 · 338 阅读 · 0 评论 -
当你PostMessage到焦头烂额的时候
<br />在各种 WM_ 间生活惯了, 仿佛离了PostMessage(),这份Google test就写不下去了。但是PostMessage() 的第一个句柄参数是个可恶的HWND,特别是当我想要发个键盘或是鼠标消息时,用spy++截了半天也找不到这天杀的消息到底是传到哪个HWND中了。这个时候,keybd_event 和 mouse_event可以帮上我们的大忙<br />其时,有时候翻翻windows的api,比起到处搜WM_能更快的解决问题。如果一个程序设计得足够好的话,它几乎可以完全通过keyb原创 2010-10-12 20:45:00 · 380 阅读 · 0 评论