本站动态:

Tag: IModule预览模式: 普通 | 列表

Brew中的Module的实现方法

在Brew中,I是Interface(接口)的意思,如IModule,IShell。IBase提供了AddRef和Release的方法,其他接口均继承自IBase,使每个接口都具有类COM的功能。与C++不同的是,Brew的继承只是方法(函数)的继承,并没有数据的继承。Brew的继承只能够是单向链式的继承,即一个接口不能够同时继承其他多个接口,但可以一级一级继承,如IRootForm->IForm->IHandler->IQueryInterface->IBase(->是继承自的意思,右边的是父亲,左边的是孩子)。这些所谓的继承,实际上也只是使用宏定义实现的结构体成员的累积定义,即会将“父类”的所有方法(函数指针成员)放在结构体的前面,再在后面添加自己的方法(函数指针成员),来实现“子类”具有“父类”全部方法的功能。

查看更多...

Tags: brew IModule Module Interface 继承 类模拟 接口 方法 成员 函数 派生

分类:brew开发 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2046

关于内存的申请和使用

其实malloc只需要你告诉它你需要malloc多少个字节的内存空间,至于这个内存空间malloc出来之后你会干什么,它并不知道,也不去管。参数中多使用sizeof来计算,这样不管什么样的环境(如不同的cpu,不同的结构体对齐方式)都可以高枕无忧。我要说的是,malloc很老实,你让它给你分配多少个字节的内存空间,它就会给你分配多少个字节的连续的内存空间,除非内存不足。它的返回值类型是void*,也就是说,你可以随便转化,甚至可以决定使用这块内存的哪一部分(比如为了判断内存有没有越界,在分配时故意多分配两个字节,最前面一个字节和最后面一个字节不真正使用,而放一个特殊的值,用以校验),也可以把这块内存分成好几个小块来使用,比如前面一块放普通的数据,后面的一块放函数指针(或倒过来),规则是右你来定的,只要你在使用过程中一直遵守这样的规则就好。

查看更多...

Tags: 动态申请 malloc 内存分配 内存使用 brew IModule 强制转化

分类:C/C++ | 固定链接 | 评论: 1 | 引用: 0 | 查看次数: 1289