Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Speicher für PChar allozieren und freigeben

  Alt 17. Okt 2003, 10:00
Zitat von OLLI_T:
funzt
Nähere Bedeutung bitte!


Zitat:
Delphi-Quellcode:
Var pC:PChar;
begin
  Getmem(pC,100);
  Zeromemory(pC,100);
  Freemem(pC);
End;
Und was geht daran nicht?

Zitat:
Delphi-Quellcode:
Var pC:PChar;
Begin
  Getmem(pC,100);
  pC:='Zensiert';
  Freemem(pC);
End;
Du reservierst hier Speicher, auf den pC dann zeigt und überschreibst den Wert von pC mit dem Zeiger, den der Compiler für 'Zensiert' erzeugt hat. Danach versuchst du den schreibgeschützten Zeiger, der nicht dem Wert entspricht, den GetMem zurückgeliefert hat, freizugeben.
Einem PChar weist man Strings nicht so zu, außer du weißt, dass er konstant (schreibgeschützt) sein soll, dann darfst du aber auch keinen Speicher reservieren oder freigeben.


Delphi-Quellcode:
GetMem(pC, 100);
StrCopy(pC, 'Zensiert');
FreeMem(pC);
Die beiden Zeilen
Delphi-Quellcode:
  Getmem(pC,100);
  Zeromemory(pC,100);
kann man auch so schreiben:
pC := AllocMem(100);
  Mit Zitat antworten Zitat