Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Boxa membrana tweeter infundata

ajutor

Whisky for Mac

Xiaomi 14 Gpay
 Izolare zid exterior de scandura

Dezinstalare drivere W11 23H3

Recomandare masina de spalat fiab...

BSOD din cauza Intel Audio DSP dr...
 De ce sunt oamenii nostalgici

Cum vand casa fara factura Hidroe...

Scor FICO minim

Tonometru compensat CAS?
 polita RCA ONLINE

Termostat frigider - verificare

Mai au PC-urile vreun viitor?

Centrala termica immergas
 

Javascript - cum sa sterg complet obiectele "orfane" dintr-o linked list

- - - - -
  • Please log in to reply
2 replies to this topic

#1
wolfenste

wolfenste

    Member

  • Grup: Members
  • Posts: 531
  • Înscris: 02.05.2018
Am o linked list in care adaug si sterg noduri. Creez un nou nod (un obiect avand mai multe proprietati) iar daca il elimin mai tarziu din lista, doar editez legaturile dintre nodul precedent si nodul urmator. Si gata, nodul "sters" nu mai apare in lista. Numai ca el este doar eliminat din lista, ramane in memorie (ram). Vreau sa il sterg definitiv sa nu am memoria ocupata degeaba. Chiar daca asta se intampla intr-o functie si vor fi sterse oricum toate la iesirea din functie (functia returneaza number), pentru input foarte mare tot o sa am memoria ocupata prea mult si degeaba.

Cica daca nu le-am definit cu "var" ar putea fi sterse cu delete. Le-am definit cu "let".
Daca le pun intr-un array ce functioneaza ca un stack si le dau array.pop () pana ramane gol, sunt sterse definitiv?
Alte idei? Cum sa procedez corect? Va rog astazi ca maine-i prea tarziu. :)
Multumesc!

Edited by wolfenste, 07 July 2021 - 09:40.


#2
laffin

laffin

    Senior Member

  • Grup: Senior Members
  • Posts: 9,495
  • Înscris: 16.03.2007
relax, se ocupa garbage collector.

#3
wolfenste

wolfenste

    Member

  • Grup: Members
  • Posts: 531
  • Înscris: 02.05.2018
Adica sa-l las asa? Nu e codul propriu zis, e simplificat sa fie ilustrativ.

class O {
constructor (val, prev, next) {
	 this.val = val;
	 this.prev = prev;
	 this.next = next;
}
}

function insertAfter (position, element) {
element.next = position.next;
element.prev = position;
element.next.prev = element;
position.next = element;
}

function deleteCurrent (current) {
current.prev.next = current.next;
current.next.prev = current.prev;
}


function some () {
// Create a doubly linked list with a sentinel nil
let nil = new O (null, null, null);
let head = new O (1, null, null);
nil.next = head;
nil.prev = head;
head.next = nil;
head.prev = nil;

let current = nil.next;
for (let i = 2; i < 11; ++i) {
	 let obj = new O (i, null, null);
	 insertAfter (current, obj);
	 current = current.next;
}

console.log (current); // current is object with val = 10
let stack = []; // keeps objects that must be removed from the list
stack.push (current); // current is in the stack
deleteCurrent (current); // current is not in the list anymore

stack.pop (); // current is not in the stack anymore
console.log (current); // current is still living

// Last edit: trebuia sa-i dau undefined inainte....
current = undefined;
delete (current);
console.log (current); // current is undefined.

}

some ();


View Postlaffin, on 07 iulie 2021 - 10:22, said:

relax, se ocupa garbage collector.

Ok, nu-mi mai bat capul cu asta. Multumesc!

Edited by wolfenste, 07 July 2021 - 10:47.


Anunturi

Chirurgia cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate