当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 有关内存管理的算法实在是太多了,多到什么程度呢?基本上能想得到的数据结构,都能出现在各式各样的内存管理算法之中,数组、链表、散列表、二叉树等等都在这里大放异彩。
 

 

 ·让video render停下来    »显示摘要«
    摘要:使用directshow开发filter的过程中,遇到一个奇怪的问题。当video render有图像可以播放的时候,点graphedit的stop没有问题,可以很正常的停止;但是当render没有数据的时候,点stop,整个graphedit就会没有响应,10秒之后,timeout了,会弹出个对话框,说无法停止。 解决这个问题的方法很简单,就是在某个filter的pause中当m_state ......
 ·rss介绍    »显示摘要«
    摘要:http://www.cnblog.org/wiki/?p=rss 今天肯定有人还记得ie 4刚刚推出来的时候有一个有趣的功能,那就是新闻频道。这个新闻频道的功能与netscape推出的新闻频道是很相似的(当时netscape还是市场上领先的浏览器)。为此netscape 定义了一套描述新闻频道的语言,这就是rss,只不过netscape自当时起每况愈下,所以最终也没有发布一个正式的rss规范(......


MudOS中的内存管理
有关内存管理的算法实在是太多了,多到什么程度呢?基本上能想得到的数据结构,都能出现在各式各样的内存管理算法之中,数组.链表.散列表.二叉树等等都在这里大放异彩.研究内存管理实在是一件有趣的事情,同时也能极大的提高自己的编程能力.

mudos中定义了至少3套内存分配函数库: 【程序编程相关:为您的图片添加电灯光照效果

内存管理方案 【推荐阅读:图片的平滑切换处理技术

2.         satoria´s malloc——这算是专门为mudos打造的函数库,比大多数系统内建函数要快; 【扩展信息:为您的应用程序建立投影式立体窗口(阴影)

1.         build-in system malloc——系统内建函数库,即malloc,realloc,calloc,free;

3.         bsd (berkeley software distributions) malloc——随着freebsd发布出来的malloc源代码,速度应该算是最快的,但会浪费不少内存空间.

定义了至少2套包装(wrap)函数库:

1.           wrappedmalloc——简单的对内存分配函数进行了一下包装,提供了有限的内存分配统计功能:内存分配次数(alloc),内存释放次数(free),内存再分配次数(realloc);

2.           debugmalloc——正如其名所暗示的:调试期使用的内存分配函数,它的实现比较复杂,不仅提供了安全性检查,而且提供的统计功能也更完善,比如可以查出某次内存分配是为哪种数据类型提供内存空间.

 

在编译mudos时,通过选择不同的宏定义来选择不同的内存管理方案:

/* macro.h */

/*

   define for malloc, free, realloc, and calloc depend upon what malloc

   package and optional wrapper is used.  this technique is used because

   overlaying system malloc with another function also named malloc doesn´t

   work on most mahines that have shared libraries.  it will also let

   us keep malloc stats even when system malloc is used.

 

   please refer to options.h for selecting malloc package and wrapper.

*/

#if (defined(sysmalloc) + defined(smalloc) + defined(bsdmalloc)) > 1

!only one malloc package should be defined

#endif

 

#if (defined(wrappedmalloc) + defined(debugmalloc)) > 1

!only one wrapper (at most) should be defined

#endif

 

#if defined (wrappedmalloc) && !defined(in_malloc_wrapper)

 

#  define malloc(x)               wrappedmalloc(x)


...   下一页
    摘要:解决dbgrid的鼠标滚动的方法1. add in .h file: private: // 添加声明void __fastcall (__closure *oldproc)(messages::tmessage &message);void __fastcall newproc(tmessage &message); 2. add in .cpp file:// 添加以......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE