var x: ansistring;
begin
x := 'dupa';
x := '';
end.
Jak wykonalem x := ''; to chyba juz pamiec sie zwolnila? A mozna usuwac te
AnsiStringi w inny sposob? o0
var x: ansistring;
begin
x := 'dupa';
x := '';
end.
Jak wykonalem x := ''; to chyba juz pamiec sie zwolnila? A mozna usuwac te
AnsiStringi w inny sposob? o0
SetLength(x, 0);
Dzieki.
I jeszcze jedno pytanie. Jak zadeklaruje sobie jakas zmienna np x: byte; to jej wartosc
jest nieokreslona. A jak deklaruje x:ansistring ? To kompilator automatycznie ustawia
jej wartosc na NIL?
Bo mam tablice taka 4 tysiace ansistringow... i niewiem czy trzeba je jakos najpierw poustawiac.
byte 0..255
i jeśli jej nie ustawiasz domyslnie wynosi 0
i gdy zadeklarujesz x: byte to domyslnie ma wartośc 0
gosc: nieprawda.
Zmienna lokalna typu byte będzie miała wartość nieokreśloną (śmieci, zależy co akurat wcześniej leżało tam w pamięci, nb. Delphi wyrzuci ci warninga, jakbyś chciał odczytać taką wartość).
Zmienne typu czy to String, czy to AnsiString będą zerowane, bo to więcej niż ciąg znaków: wcześniej jest ustawiany licznik odwołań na 1, długość na 0 (i chyba wartośc na '').
Do zerowania tablic polecam ZeroMemory.
No wlasnie chyba nie. Nieustawi zadnego licznika odwolan ani ciag na '' ... ?
Ustawil tylko zmienna na NIL a w pameci nic niezarezerwuje.
Ale niewiem dokladnie niech ktos sie wypowie jakis fachowiec.
edit:
A co do tego zeroMemory to mi niepotrzbene bo sam sobie moge napissc rpocedure
ktora niekoniecznie wypelni zerami.
Chodzi mi tylko o iddee sama jak to kompilator robi.