【发布时间】:2010-10-16 13:20:46
【问题描述】:
我有一个 C++ 程序,它调用 Delphi DLL 来初始化一个包含字符的缓冲区。
我正在测试接口以确保数据正确传递:
在 C++ 程序中:
char * pMsg = (char*)malloc(3); //allocate buffer
Init(pMsg * char); //Delphi DLL function
在 Delphi DLL 中:
procedure Init(pMsg:PChar);
var
pHardcodedMsg:PChar;
begin
pHardcodedMsg:= '123';
CopyMemory(pMsg, pHardcodedMsg, Length(pHardcodedMsg));
end;
但是,当我尝试在 C++ 中 printf( (const char*)pMsg ) 时,
它显示“123”后跟一些垃圾字符。
为什么会这样? 如何成功地将 char 数组放入缓冲区并正确打印字符串?
【问题讨论】: