Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    116

    processo killato dal sistema operativo

    Ciao a tutti,
    chi mi sa dire per favore quali sono le ragioni per
    cui un processo può venire killato dal sistema operativo?

    Ho scritto un programma in c++ che richiede molte risorse computazionali (deve fare nolti calcoli) e credo che questa sia l'unica ragione per cui dopo averlo lanciato da shell
    linux ottengo "Killed" (ma anche se fosse questa la causa
    cosa ci posso fare?).

    Per quanto riguarda la memoria pendo che i problemi non siano lì.

    Help!!!!!!!!!!!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Non credo che venga killato perche' fa molti calcoli (!)

    Probabilmente alloca troppa memoria o produce troppi memory leak ...

    O tenta di accedere a porzioni di memoria che non sono di sua competenza ...

    Bisognerebbe vedere il codice ... isolando le varie porzioni per cercare di individuare il problema ...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    116
    Ciao Oregon grazie per continuare a rispondermi!

    Ascolta il memory leak si verifica quando non si fanno dei delete?
    Io credo di averli fatti tutti.

    Hai scrtto.
    "O tenta di accedere a porzioni di memoria che non sono di sua competenza ..."
    ma come è possibile? sarebbe andato in sementation fault giusto?
    In caso contrario sai qual è un
    modo per vederlo?....mi rendo conto che la domanda
    potrebbe essere stupida ma magari un aiutino me lo sai dare!

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Certo se non fai i corrispondenti delete ...

    E' anche vero il fatto del segmentation fault ma probabilmente il sistema operativo intercetta questi tentativi e provvede ...

    Un aiuto non so come dartelo senza vedere il codice ... ti consiglio di escludere parti del codice e provare ... piano piano dovresti individuare l'area del codice dove si presenta il problema ...

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    116
    Ciao Oregon,
    forse ho capito il mio problema probabilmento non dealloco memoria:
    siano m e y dei puntatori ad un oggetto;
    ad un certo punto inizializzo m;
    poi voglio fare y = m;

    come faccio a distruggere m che non
    mi serve più?
    se faccio delete m mi distrugge ciò che è puntato da
    m, che è la stessa cosa a cui punta anvhe y e dunque non va bene...

    Come si fa? Il mio problema dovrebbe essere questo!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    116

    Deallocazione di memoria puntata...Ciao a tutti, non so come deallocare la memoria ne

    Ciao a tutti,
    non so come deallocare la memoria nel seguente caso:

    siano m e y dei puntatori ad un oggetto;
    ad un certo punto inizializzo m;
    poi voglio fare y = m; (ALIASING...)

    come faccio a distruggere m che non
    mi serve più?
    se faccio delete m mi distrugge ciò che è puntato da
    m, che è la stessa cosa a cui punta anvhe y e dunque non va bene...

    Ma allora come si fa?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Una cosa e' deallocare la memoria, un'altra eliminare il puntatore.

    Se la variabile puntatore e' locale, viene eliminata alla fine della funzione. Se e' globale alla fine del programma.

    Ma non e' molto importante eliminare il puntatore. Importante e' la gestione della memoria ...

    Se non ho capito il problema, dimmelo, ma mostra anche il codice a cui fai riferimento ...

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    116
    Hai colto il problema.
    Ma non siamo nel caso di memory leack?
    se faccio una inizializzazione del tipo puntatore = puntatore
    entrambe le variabili puntano alla stessa cella di memoria.
    Quindi non ha senso distruggere la variabile a destra dell'uguale
    (che secondo ciò che mi hai detto tu dovrebbe essere automaticamente distrutta dal compilatore).

    Esattamente ho fatto:
    Oggetto * m = new Oggetto();
    Oggetto * y = new Oggetto();
    delete m;//per evitare il memory leack
    delete y;

    m = ...// istanzio l'oggetto
    y = m;

    Ora non mi serve distruggere m (perchè lo fa il compilatore vero?).
    Ma allora non so perchè il mio programma viene killato dal sistema operativo (killed) (c'è una funzione con quel pezzo di codice che viene chiamata migliaia di volte).

    Fammi sapere se ho fatto giusto secondo te per favore!

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Un attimo ... mostra tutto il codice esatto ... specialmente il contesto (ad esempio le funzioni in cui si trova il codice ...) ...

    Questo codice, per esempio

    Oggetto * m = new Oggetto();
    Oggetto * y = new Oggetto();
    delete m;//per evitare il memory leack
    delete y;

    m = ...// istanzio l'oggetto
    y = m;

    dove e' posto ...? Specifica meglio ...

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Meglio ... se hai questo codice

    codice:
    int main(int argc, char* argv[])
    {
    	Oggetto *m = new Oggetto();
    	Oggetto *y = new Oggetto();
    	delete m;
    	delete y;
    
    	m = new Oggetto();
    	y = m; 
    
    	delete y; // oppure delete m, ma non entrambe
    
    	return 0;
    }
    l'ultima delete deve essere

    delete y

    oppure

    delete m

    (e' indifferente) ma non ambedue.

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.