AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language C++ Builder lastige Frage / ReallocMem und ReallocMemory
Thema durchsuchen
Ansicht
Themen-Optionen

C++ Builder lastige Frage / ReallocMem und ReallocMemory

Ein Thema von TurboMagic · begonnen am 22. Aug 2020 · letzter Beitrag vom 10. Sep 2020
 
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.022 Beiträge
 
Delphi 12 Athens
 
#1

C++ Builder lastige Frage / ReallocMem und ReallocMemory

  Alt 22. Aug 2020, 17:39
Delphi-Version: 10.1 Berlin
Hallo,

ich bin immer noch dabei meine ToDO-Liste für die DEC
(https://github.com/winkelsdorf/Delph...tionCompendium)
abzuarbeiten. Ein Punkt dreht sich dabei um die Done Methode der Hash Basisklasse.
Diese wird praktisch bei jedem Hash-Vorgang am Ende aufgerufen. Und da drin liegt mein Verständnisproblem.
Siehe auch den Kommentar in der Methode.

Fragen:

1. Wozu braucht man ReallocMem hier, wenn doch FBuffer ein PByteArray ist und somit ein Zeiger auf ein
Array fixer größe? Der Code war schon in DEC 5.2 drin, nur wozu?

2. Welcher Unterschied ist zwischen ReallocMem(FBuffer, 0); und FBuffer := ReallocMemory(FBuffer, 0);?
Wenn ich mit wenig Aufwand auch C++ Builder kompatibilität umsetzen kann, warum nicht.
Nur muss es während der Entwicklung irgend ein Problem gegeben haben das dazu führte,
dass ich bei ReallocMem blieb. Anhand der vorhandenen Unit Tests kann ich das Problem
derzeit (in 10.3.3, die Entwicklung hatte ich aber in 10.1 übernommen/gestartet) nicht mehr
nachvollziehen. Weiß jemand ob sich da in diesen Routinen was getan hat?
Und wenn's C++ Builder kompatibel sein soll, muss es ReallocMem sein?

Delphi-Quellcode:
procedure TDECHash.Done;
begin
  DoDone;
  ProtectBuffer(FBuffer^, FBufferSize);

  FBufferSize := 0;
  // ReallocMemory instead of ReallocMem due to C++ compatibility as per 10.1 help
// Commented out, as it seems to not properly work with a new size of 0, but
// calling FreeMem is not correct either as it frees the pointer. One would get
// around of all of this by getting rid of PByte as buffer type completely by
// making it a TBytes variable
// FBuffer := ReallocMemory(FBuffer, 0);

  ReallocMem(FBuffer, 0);
end;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz