Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [C++] new e delete

  1. #1
    Utente di HTML.it L'avatar di hfish
    Registrato dal
    Dec 2000
    Messaggi
    3,180

    [C++] new e delete

    la memoria dinamica allocata con new e non rimossa con delete viene automaticamente deallocata alla fine del programma o rimane come garbage anche dopo l'uscita dal programma stesso???

    thanks...
    Non dobbiamo trascurare la probabilità che il costante inculcare la credenza in Dio nelle menti dei bambini possa produrre un effetto così forte e duraturo sui loro cervelli non ancora completamente sviluppati, da diventare per loro tanto difficile sbarazzarsene, quanto per una scimmia disfarsi della sua istintiva paura o ripugnanza del serpente.

  2. #2

    Re: [C++] new e delete

    Originariamente inviato da hfish
    la memoria dinamica allocata con new e non rimossa con delete viene automaticamente deallocata alla fine del programma o rimane come garbage anche dopo l'uscita dal programma stesso???

    thanks...
    E' comunque allocata nello spazio di indirizzamento del programma quindi quando esso termina viene considerata come non più allocata dal sistema operativo.Ovviamente durante l'esecuzione del programma invece resta allocata e consuma risorse magari preziose per quello e per gli altri programmi in esecuzione.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    4
    devi assolutamente fare la new prima di uscire ho ti rimane in memoria.

    ricorda quando fai la new devi fare sempre il delete dell'oggetto che hai creato.


    ciao

  4. #4
    Utente di HTML.it L'avatar di Angioletto
    Registrato dal
    Jan 2004
    Messaggi
    1,246

    Re: [C++] new e delete

    Originariamente inviato da hfish
    la memoria dinamica allocata con new e non rimossa con delete viene automaticamente deallocata alla fine del programma o rimane come garbage anche dopo l'uscita dal programma stesso???

    thanks...
    da quel che so, col c++ devi NECESSARIAMENTE fare l'operazione di delete dopo aver allocato risorse con new..
    anzi, appena fai una new, un pò + sotto scrivi pure il relativo delete: purtroppo è un errore che al tempo di compilazione non viene stimato, quindi crea perdite di risorse..perchè non hai mai detto al sistema operativo che quella memoria non serve +..

    con java è diverso: c'è il garbage collector (credo si chiami così), il quale pensa a ripulire la memoria..
    Per liquidare un popolo si comincia con il privarli della memoria.Si distruggono i loro libri, la loro cultura, la loro storia. E qualcun’ altro scrive loro altri libri, li fornisce di un’altra cultura, inventa per loro un’altra storia. (Milan Kundera)

  5. #5
    anzi, appena fai una new, un pò + sotto scrivi pure il relativo delete
    Questo non sempre è possibile!
    ..crea perdite di risorse..perchè non hai mai detto al sistema operativo che quella memoria non serve +..
    Si ma la domanda era se alla chisura del programma la memoria resta allocata,la risposta è NO perchè la memoria è comunque allocata nello spazio di indirizzamento del processo/i associato/i al programma e quindi quando il programma termina viene comunque liberata (almeno sotto windows).
    con java è diverso: c'è il garbage collector (credo si chiami così), il quale pensa a ripulire la memoria..
    Si si hiama così.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    6
    Nonostante la memoria allocata in un programma faccia parte dello spazio indirizzamento del programma stesso, io consiglio
    SEMPRE di creare una funzione di deallocazione per tutto quanto allocato durante l'esecuzione ... infatti non é detto ke il sistema operativo liberi tutte le risorse di memoria allocate da un programma, anzi in talune circostanze, specialmente quando si scrivono programmi multithread la deallocazione della memoria allocata con new è praticamente d'obbligo se si vogliono evitare brutte sorprese!
    Il C++ non ha garbage collector per cui é sempre a cura del programmatore allocare/deallocare la memoria ... evitate ke lo faccia il s.o. per voi (ci son delle belle differenze su come agisce windows95,win98,winMe,WinNT4.0,Win2k ,WinXP e un sistema unix-like e soprattutto su "quando").
    L'iterazione é umana, la ricorsione é divina ...
    ... il tracollo dello stack é divinamente dietro l'angolo

  7. #7
    Originariamente inviato da DVice
    Nonostante la memoria allocata in un programma faccia parte dello spazio indirizzamento del programma stesso, io consiglio
    SEMPRE di creare una funzione di deallocazione per tutto quanto allocato durante l'esecuzione ... infatti non é detto ke il sistema operativo liberi tutte le risorse di memoria allocate da un programma, anzi in talune circostanze, specialmente quando si scrivono programmi multithread la deallocazione della memoria allocata con new è praticamente d'obbligo se si vogliono evitare brutte sorprese!
    Il C++ non ha garbage collector per cui é sempre a cura del programmatore allocare/deallocare la memoria ... evitate ke lo faccia il s.o. per voi (ci son delle belle differenze su come agisce windows95,win98,winMe,WinNT4.0,Win2k ,WinXP e un sistema unix-like e soprattutto su "quando").
    Il mio ovviamente non era un invito a non deallocare la memoria,ho solo detto che in generale windows (che mi risulti qualunque versione) dealloca la memoria al termine di un programma,anche quì c'è stato un fraintendimento,intendevo al termine regolare di un programma non al crash,come si comporta in questo caso non lo so.Ciao
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  8. #8
    Utente di HTML.it L'avatar di edriv
    Registrato dal
    Oct 2004
    Messaggi
    367
    Un garbage collector come quello di Java invece si occupa di deallocare la memoria appena non esistono riferimenti ad essa (diminuendo le prestazioni).
    I've got a bike. You can ride it if you like.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.