FreeMem为什么会出错,,那个兄弟说下..(100分)

  • 主题发起人 主题发起人 fenghuo
  • 开始时间 开始时间
F

fenghuo

Unregistered / Unconfirmed
GUEST, unregistred user!
这是一个简单的代码,可是调试时出错,谁能告诉我原因?
var
RealKey: pbyte;
RealKeyLength: integer;
begin
RealKeyLength := length('abcd');
getmem(RealKey, RealKeyLength);
StrPCopy(@RealKey, 'abcd');
freemem(RealKey, RealKeyLength);
 
指针被你冲掉了
=^0^=
应该:
var
RealKey: pbyte;
RealKeyLength: integer;
begin
RealKeyLength := length('abcd');
getmem(RealKey, RealKeyLength);
StrPCopy(PChar(RealKey), 'abcd');
freemem(RealKey, RealKeyLength);
 
跟你的数据类型有关~~

var
RealKey: PChar; // 注意这里
RealKeyLength: integer;
begin
RealKeyLength := length('abcd');
getmem(RealKey, RealKeyLength);
StrPCopy(RealKey, 'abcd');
freemem(RealKey, RealKeyLength);

// StrPCopy 第一个参数类型 是PChar的
 
后退
顶部