delphi pchar 指针错误

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;

posted @ 2015-01-16 15:17  老榕树  阅读(484)  评论(0编辑  收藏  举报