PChar的用法

yao518 2006-12-15 04:49:38
在写这个问题这前我也看了关于PChar方面的资料,但都不是我想要的.我只想知道我下面的代码为什么会出错,请大家给一个解释就行了.

var
PStr: PChar;
begin
GetMem(PStr, 225);
PStr := PChar('abc');
FreeMem(PStr);
end;

就是这短短的三行代码,可是他出了错,运行不了.
...全文
525 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
skertone 2006-12-21
  • 打赏
  • 举报
回复
用StrPCopy 为什么 呢?

因为PChar 是 #$0 (\0) 字符结尾的字串

StrPCopy会自动加上这个 #$0结尾标记

所以PChar要留的长度是 所需长度 + 1
JetDash 2006-12-21
  • 打赏
  • 举报
回复
你的本意是给pstr赋值吧,那应该是
strcopy(pstr,pchar('abc'));
zhao_yong 2006-12-19
  • 打赏
  • 举报
回复
如樓上說的做應該不會報錯了吧?
zhangl_cn 2006-12-19
  • 打赏
  • 举报
回复
GetMem(PStr, 225);
//PStr:= PChar('abc');
StrPCopy(Pstr,'abc');
FreeMem(PStr);
dyny 2006-12-16
  • 打赏
  • 举报
回复
GetMem(PStr, 225); //申请了内存,并由pstr指向这个内存
PStr:= PChar('abc'); //又把pstr批向了'abc'所在的内存空间
FreeMem(PStr); //在此处试图释放'abc'所在的内存空间,但这是不被允许的。
天涯倦客 2006-12-15
  • 打赏
  • 举报
回复
var
PStr: PChar;
begin
PStr := PChar('abc');
wudi_1982 2006-12-15
  • 打赏
  • 举报
回复
楼上的说了。
madyak 2006-12-15
  • 打赏
  • 举报
回复
用法有问题。
var
PStr: PChar;
begin
GetMem(PStr, 225);//申请了内存,并由pstr指向这个内存
PStr := PChar('abc');//又把pstr批向了'ABC'所在的内存空间
FreeMem(PStr);//在此处释放的空间并不是第一次申请的空间,
由于这句话PStr := PChar('abc'),已经把申请的空间给弄丢了,释放不了了。
end;

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧