Jump to content


Photo

[Qt/C++] Gestione Memoria


This topic has been archived. This means that you cannot reply to this topic.
51 replies to this topic

#21 toyo

toyo

    sono triste

  • Donatori di sperma
  • PipPipPipPipPipPipPip
  • 44144 posts

Posted 04 August 2011 - 14:21

boost è tutto un insieme di librerie C++ open, molto facile da usare e molto efficiente.
Va dalle normali string all'asio passando per threads a mutex.
Solo NON guardare il codice di boost perché se lo fai ti senti scemo.


ah allora non posso usarle


Legami GUI è la GUI di Legami :)

FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
 

Mai più giorni felici


#22 trallallero

trallallero

    Schiavo

  • Membri
  • PipPipPipPipPipPipPip
  • 16188 posts

Posted 04 August 2011 - 14:40

ah allora non posso usarle

Uai ?

Legami GUI è la GUI di Legami :)

Ah, pensavo Légami Gui :)
Don't worry, faith will come soon, like a recall but,
if you can't wait, just stop thinking at all 

 


#23 toyo

toyo

    sono triste

  • Donatori di sperma
  • PipPipPipPipPipPipPip
  • 44144 posts

Posted 04 August 2011 - 15:51

@[/url]":1gbnbnk6] ah allora non posso usarle

Uai ?


direttive del prof,

Il progetto deve compilare (e quindi eseguire) correttamente sulle macchine Linux del laboratorio informatico del plesso Paolotti con il compilatore GNU g++ 4.x. Nelle macchine Linux del laboratorio e installata la libreria Qt nella versione 4.6 (4.7 e invece l’ultima versione di Qt).



spero di non avere scleri, visto che sto usando le 4.7.

FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
 

Mai più giorni felici


#24 trallallero

trallallero

    Schiavo

  • Membri
  • PipPipPipPipPipPipPip
  • 16188 posts

Posted 04 August 2011 - 19:59

Se non fai cose particolarmente complesse, non dovresti avere problemi tra 4.6 e 4.7, però io, per essere veramente sicuro, userei le 4.6.

Comunque crearsi una classe tipo shared pointers della boost, se hai dimestichezza coi templates, non è difficile. O anche cancellare tutti i pointers nel distruttore se il programma non ne ha troppi (e ricordarsi di settarli a NULL nel costruttore! è un errore molto comune e molto infido perché spesso ti va bene, poi succede che il programma crasha perché deleti un pointer che punta a sarcazzo... e per la legge di Murphy, a casa ti va bene ma a scuola ti crasha).
Don't worry, faith will come soon, like a recall but,
if you can't wait, just stop thinking at all 

 


#25 toyo

toyo

    sono triste

  • Donatori di sperma
  • PipPipPipPipPipPipPip
  • 44144 posts

Posted 04 August 2011 - 20:22

Se non fai cose particolarmente complesse, non dovresti avere problemi tra 4.6 e 4.7, però io, per essere veramente sicuro, userei le 4.6.


no beh ormai resto con queste, al massimo a -24h dalle deadline mi accorgo che qualcosa non funziona e devo cambiarlo e mi metto sotto come fossi gonfio di speed, sono abbastanza esperto in queste cose :)



Comunque crearsi una classe tipo shared pointers della boost, se hai dimestichezza coi templates, non è difficile. O anche cancellare tutti i pointers nel distruttore se il programma non ne ha troppi (e ricordarsi di settarli a NULL nel costruttore! è un errore molto comune e molto infido perché spesso ti va bene, poi succede che il programma crasha perché deleti un pointer che punta a sarcazzo... e per la legge di Murphy, a casa ti va bene ma a scuola ti crasha).


ormai me li tengo così dai, per quanto riguarda il settarli a null, di solito lo evito, nel distruttore faccio tutto tipo if (p) delete p;

FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
 

Mai più giorni felici


#26 trallallero

trallallero

    Schiavo

  • Membri
  • PipPipPipPipPipPipPip
  • 16188 posts

Posted 04 August 2011 - 20:30

per quanto riguarda il settarli a null, di solito lo evito, nel distruttore faccio tutto tipo if (p) delete p;

Appunto. Metti caso (e succede) che il puntatore non venga allocato nel senso che non serve al programma o sarcazzo, quando lo deleti, deleti un'area di memoria che non è stata da te allocata e il programma fa core.
Se invece lo setti a NULL, non può succedere.

Se poi mi dici che sei sicuro al 100% che il puntatore venga allocato, allora ne riparliamo tra qualche anno di esperienza :)
Don't worry, faith will come soon, like a recall but,
if you can't wait, just stop thinking at all 

 


#27 toyo

toyo

    sono triste

  • Donatori di sperma
  • PipPipPipPipPipPipPip
  • 44144 posts

Posted 04 August 2011 - 20:34

[quote name="trallallero @":2oxundhx] [quote name='"toyo @":2oxundhx] per quanto riguarda il settarli a null' date=' di solito lo evito, nel distruttore faccio tutto tipo if (p) delete p;[/quote']
Appunto. Metti caso (e succede) che il puntatore non venga allocato nel senso che non serve al programma o sarcazzo, quando lo deleti, deleti un'area di memoria che non è stata da te allocata e il programma fa core.
Se invece lo setti a NULL, non può succedere.

Se poi mi dici che sei sicuro al 100% che il puntatore venga allocato, allora ne riparliamo tra qualche anno di esperienza :)[/quote]


no ma scusa ma se il puntatore non è mai stato allocato, quando faccio if(p) delete p, la delete non la fa, in quanto il puntatore è null :)

probabilmente ho capito male quel che vuoi dire eh, spiegami :)

FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
 

Mai più giorni felici


#28 trallallero

trallallero

    Schiavo

  • Membri
  • PipPipPipPipPipPipPip
  • 16188 posts

Posted 04 August 2011 - 20:40

Un membro di una classe non viene azzerato automaticamente in fase di creazione dell'istanza. Se il puntatore non viene annullato, punta a .
Solo le variabili globali vengono inizializzate automaticamente (e forse altro che mi sfugge ma di certo non i membri di una classe).
Don't worry, faith will come soon, like a recall but,
if you can't wait, just stop thinking at all 

 


#29 toyo

toyo

    sono triste

  • Donatori di sperma
  • PipPipPipPipPipPipPip
  • 44144 posts

Posted 04 August 2011 - 21:10

scusa ma a me hanno insegnato che quando viene istanziato un'oggetto di una classe, per i membri non inizializzati dal costruttore viene chiamato il costruttore di default, che nel caso di un puntatore inizializza il puntatore a 0.

difatti questo codice
#include 

using namespace std;



int main(){

int* a;

cout<<a;

return 0;

}

stampa 0xb75d3ff4

mentre quest'altro

#include 

using namespace std;



class u{

public: int* a;};



int main(){

u* v=new(u);

cout<a;

return 0;

}

stampa, appunto, 0.

FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
 

Mai più giorni felici


#30 trallallero

trallallero

    Schiavo

  • Membri
  • PipPipPipPipPipPipPip
  • 16188 posts

Posted 04 August 2011 - 21:35

Ti assicuro che quello che succede è diverso. Prova a fare uno script che chiama il tuo programma 1000 volte e vediamo se ti printa sempre 0.
Prova a riavviare il PC o ad eseguire il programma su un altro PC.
La regola la cerco domani, ora non posso (se poi la trovi tu :) )
Don't worry, faith will come soon, like a recall but,
if you can't wait, just stop thinking at all 

 


#31 toyo

toyo

    sono triste

  • Donatori di sperma
  • PipPipPipPipPipPipPip
  • 44144 posts

Posted 04 August 2011 - 21:38

Ti assicuro che quello che succede è diverso. Prova a fare uno script che chiama il tuo programma 1000 volte e vediamo se ti printa sempre 0.
Prova a riavviare il PC o ad eseguire il programma su un altro PC.
La regola la cerco domani, ora non posso (se poi la trovi tu :) )


ora lo faccio :)


anche perchè il tipo che ci ha fatto il corso ha pubblicato un casino di roba proprio sui puntatori e sarcazzo, mi pare strano che abbia sbagliato


però oh magari si eh

FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
 

Mai più giorni felici


#32 trallallero

trallallero

    Schiavo

  • Membri
  • PipPipPipPipPipPipPip
  • 16188 posts

Posted 04 August 2011 - 21:41

Guarda, così al volo ho trovato questo:
http://www.velocityr... ... uctor.html

Q: Are members of a c++ class initialized to 0 by the default constructor ?

A1: In this case, since you omitted the 'mField' members from the (now
empty) initializer list, they are *uninitialized*.

A2: Nope.

Il primo praticamente dice che se non li inizializzi, non sono inizializzati.

Il secondo dice Nope.
Don't worry, faith will come soon, like a recall but,
if you can't wait, just stop thinking at all 

 


#33 toyo

toyo

    sono triste

  • Donatori di sperma
  • PipPipPipPipPipPipPip
  • 44144 posts

Posted 04 August 2011 - 21:46

il codice c++ è quello di prima

lo script è
#!/bin/bash

for i in `seq 1 1000`;

        do

                ./a.out >> output

        done

output è

cat output 

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

:)

FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
 

Mai più giorni felici


#34 trallallero

trallallero

    Schiavo

  • Membri
  • PipPipPipPipPipPipPip
  • 16188 posts

Posted 04 August 2011 - 21:50

Ripeto, prova a lanciarlo su un altro PC o a farlo domani.

http://stackoverflow... ... tructors-c :)
Don't worry, faith will come soon, like a recall but,
if you can't wait, just stop thinking at all 

 


#35 toyo

toyo

    sono triste

  • Donatori di sperma
  • PipPipPipPipPipPipPip
  • 44144 posts

Posted 04 August 2011 - 21:52

Guarda, così al volo ho trovato questo:
http://www.velocityr... ... uctor.html

Q: Are members of a c++ class initialized to 0 by the default constructor ?

A1: In this case, since you omitted the 'mField' members from the (now
empty) initializer list, they are *uninitialized*.

A2: Nope.

Il primo praticamente dice che se non li inizializzi, non sono inizializzati.

Il secondo dice Nope.



ho trovato il libro del prof, in effetti è scritto che i tipi derivati (puntatori inclusi), vengono lasciati indefiniti.

però in effetti il programmino di prima stampava 0, boh


inizializzo tutto (quello che non è inizializzato nel costruttore) a null dai :)

FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
 

Mai più giorni felici


#36 trallallero

trallallero

    Schiavo

  • Membri
  • PipPipPipPipPipPipPip
  • 16188 posts

Posted 04 August 2011 - 21:55

Te l'ho scritto che è un errore comune e, mentre mia madre succhia cazzi, infido, oggi va tutto, domani crasha.
Ste cose le impari solo con l'esperienza... anche a credere nelle leggi di Murphy, diobon se son vere :)
Don't worry, faith will come soon, like a recall but,
if you can't wait, just stop thinking at all 

 


#37 TigerShark

TigerShark

    Schiavo

  • Membri
  • PipPipPipPipPipPipPip
  • 16685 posts

Posted 05 August 2011 - 00:37

Ah, dimenticavo, il java lascialo ai ritardati :v

(giusto per dare un po di audience al thread)

infatti, bisogna essere proprio ritardati per lavorare su progetti da 1.5MLOC e passa in java. :o
Poi mi dici qualcosa del piu' grande progetto a cui hai lavorato.
Giusto per dare audience al thread. http://www.hwupgrade...tyle_emoticons/default/asd.gif
I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path. Where the fear has gone there will be nothing. Only I will remain.

#38 dreadknight

dreadknight

    Schiavo

  • Membri
  • PipPipPipPipPipPipPip
  • 10096 posts

Posted 05 August 2011 - 02:22

Posted Image

El sueño de la razón produce monstruos


#39 trallallero

trallallero

    Schiavo

  • Membri
  • PipPipPipPipPipPipPip
  • 16188 posts

Posted 05 August 2011 - 07:52

Ha funzionato :v
Don't worry, faith will come soon, like a recall but,
if you can't wait, just stop thinking at all 

 


#40 toyo

toyo

    sono triste

  • Donatori di sperma
  • PipPipPipPipPipPipPip
  • 44144 posts

Posted 05 August 2011 - 19:35

Oggi sono andato avanti di brutto :patpat:

FIRMA FOTTUTAMENTE EDITATA. IL FOTTUTO STAFF.
 

Mai più giorni felici