У меня есть программа на 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;
Но, когда я пытаюсь printf( (const char*)pMsg )
в C ++,
Он показывает мне «123
», за которым следуют некоторые мусорные символы.
Почему это так?
Как я могу успешно поместить массив char в буфер и правильно распечатать строку?