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)来释放



...全文
216 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
dest:=#0;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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