2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
var P: Pchar; //P 是指针 CSize: Cardinal; begin CSize := MAX_COMPUTERNAME_LENGTH + 1; GetMem(P, CSIze);//在这里你给 P 分配了一块内存。 P := ‘4321‘; //这里你将 P 指向另一处含有常量 ‘4321‘ 的内存。此时先前给 P 分配的内存 //已经成了“孤岛”,就是通常所说的“内存泄漏”。 ShowMessage(P); FreeMem(P); //常量 ‘4321‘ 的内存是由系统自动管理的,不允许人工释放。 end; //下面代码正常: var P: Pchar; //P 是指针 CSize: Cardinal; begin CSize := MAX_COMPUTERNAME_LENGTH + 1; GetMem(P, CSIze);//在这里你给 P 分配了一块内存。 strcopy(P,‘4321‘); //将常量 ‘4321‘ 复制到先前给 P 分配的内存里。 ShowMessage(P); FreeMem(P); //释放给 P 分配的内存。 end; |
时间: 2024-10-10 10:55:48