随笔分类 - Delphi-Memory2
摘要:技术交流,DH讲解. 本来之前就在写这个文章,还写了War3挂的教程,后来因为一些事就没有弄了.现在过年在家又没有事就继续把这个写完吧.哈哈.不要以为写个挂很容易,要想写个挂肯定要了解游戏呀.我们现在来了解下地雷是怎么产生的?其实只是我自己猜想的,毕竟这个游戏不是我写的...1 用户选择了多大的棋盘
阅读全文
摘要:C++能在堆栈、堆、资料区创造对象。 但是Delphi只能在堆上创造对象
阅读全文
摘要:在实际编程中,经常会用到Buffer,当string作为Buffer传值时需要注意的是1, string的值的起始索引是1,千万记住!2, 有时候需要先告诉系统去开辟出内存空间,用SetLength函数。如下代码,示范了再Move、 WriteBuffer、 ReadBuffer时候的用法:[del...
阅读全文
摘要:传统的Pascal 语言其数组大小是预先确定的,当你用数组结构声明数据类型时,你必须指定数组元素的个数。专业程序员也许知道些许动态数组的实现技术,一般是采用指针,用手工分配并释放所需的内存。Delphi 4中增加了非常简单的动态数组实现方法,实现过程效仿我前面讲过的动态长字符串。与长字符串一样,动态...
阅读全文
摘要:以delphi为例:TTest = recordc1: char;i1: Integer;c2: char;c3: Char;end;这个结构如果用sizeof取其占用的内存大小,是多少呢,是1+4+1+1=7么,不是,是4*3 = 12; 这是因为32位编译的时候,默认结构会自动内存对齐(32bi...
阅读全文
摘要:Delphi内存操作API函数System.IsMemoryManagerSet;System.Move;System.New;System.ReallocMem;System.ReallocMemory;System.SetMemoryManager;System.SysAllocMem;Syst...
阅读全文
摘要:今天在SourceForge下到了FastMM(Fast Memory Manager),听说比官方的内存管理快多了,试了一下,果然不错。目前最新的是4.27。就我的使用范围来说,我就是想看看我的程序有没有内存泄漏。首先在下载的文件里你会找到一个文件,位置在Replacement BorlndMM ...
阅读全文
摘要:(一).缘起1.1 我的一个出错程序程序名称:呼叫处理模块的压力测试工具,分为客户端和服务端。开发工具:Delhpi 5相关技术:客户端通过与服务端建立Socket连接来模拟一组电话机的拨入、按键、等待、挂机等过程。服务端对Socket事件以及收到的数据包进行预处理,并转化为抽象的呼叫模型数据,然后...
阅读全文
摘要:有些时候,我们写的程序需要播放音乐,一般大家会采用以下几种方式:1.把音乐文件放置在某个特定的目录,例如Sound,WAV,Music供程序读取播放;2.使用资源来存放音乐。有些人估计也是使用这个方法的,不过大部分人可能是先从资源里把音乐文件释放出来,然后再去读取播放。我今天要介绍的方式是直接把音乐...
阅读全文
摘要:支持面向对象编程Delphi是如此丰富和强大。雷和对象允许模块化编程。除了更多的模块和更多复杂的组件外,同时也带了更多的迷惑和更多复杂的Bugs。当用Delphi开发一个程序(几乎)总是那么的有趣,当你感觉整个世界都在反对你的这个局面下。无论什么时候你需要创建一个对象你就得释放它所使用的内存。无疑此...
阅读全文
摘要:前几日,调试一BUG,过程先不说,最后调试到MM,即Debug dcu,然后进入到GetMem.inc中的Get/FreeMem函数处后,出现AV。 然后一通找。。。郁闷了N天,后来发现将MM切换到QMM后,一切正常,然后再切回原MM,BUG出现。。。 按经验,此类问题一般由于线程未有锁保护引起,但...
阅读全文
摘要:我估摸着内存分配+释放是个基础函数,有些人可能没注意此类函数或细究,但我觉得还是弄明白的好。介绍下面内存函数前,先说一下MM的一些过程,如不关心可忽略: 1 TMemoryManager = record 2 GetMem: function(Size: Integer): Pointer; 3...
阅读全文
摘要:在开始进入正题前先罗嗦几句: 1、本人也刚学Delphi不久,也刚通过《诛仙》游戏的绝大部分CALL不久。所以在以下所说所列举的例子并不算是名门正中的写法,如有不当,请各位原谅。 2、本人所学基本都是在“漆黑一片”中自己摸索出来的。也正因如此,因而深感各位新手想入门但又无处可问的无奈心情。所以将在下
阅读全文
摘要:动态生成控件,应该是这么写(当场创建): 却一不小心写成了(少了一个Create): 结果报错:A control cannot have itself as its parent 有空研究一下,这个报错信息在哪里。另外我就是很感兴趣,在编译器层面是如何做到“强行转换”的?仅仅切换内存的大小?留个爪
阅读全文
摘要:1. 根据 Delphi 指令参考手册中 说明: Assigned 函式在参数不为 nil 时传回 True, 表示指针已经指到某个内存地址,这个内存地址可能是一个对象地首地址,也可能在函数或过程中,声明一个指针变量,没有赋值为 nil ,无乱的指向某处,这两个种情况, Assigned (指针变量
阅读全文