PAnsiChar如何指向一个空字符串

ilikeff8 2017-11-03 02:19:34

class procedure TFunctions.StringToPAnsiChar(str: string; var dest: PAnsiChar);
var
ansiStr: AnsiString;
begin
ansiStr := AnsiString(str);

if length(ansiStr) > 0 then
begin
Move(ansiStr[1], dest^, length(ansiStr) + 1);
end
else
begin
dest:='';
end;
end;


要做一个把string转换位PAnsiChar的方法


resultInfo: PAnsiChar = nil;

if resultInfo = nil then
begin
resultInfo := AnsiStrAlloc(1024);
end;



用完就释放

StrDispose(resultInfo);


当string有内容时,StringToPAnsiChar运行正常

但如果要转换的string是空字符串,dest=‘’后,似乎内存就被释放了,等于自动调用 StrDispose(resultInfo); 了,因为当我再执行 StrDispose(resultInfo);是,提示内存访问失败

我想达到的目的是resultInfo返回'',而且其分配的地址块不要释放,还可以使用,然后统一通过 StrDispose(resultInfo)来释放



...全文
180 1 点赞 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dest:=#0;
  • 打赏
  • 举报
回复
相关推荐
发帖
语言基础/算法/系统设计
加入

1.6w+

社区成员

Delphi 语言基础/算法/系统设计
申请成为版主
帖子事件
创建了帖子
2017-11-03 02:19
社区公告
暂无公告