cod naspa

Acest forum este dedicat intrebarilor de programare care nu-si au locul in unul din celelalte forumuri
User avatar
MrSmersh
Microsoft MVP
Microsoft MVP
Posts: 289
Joined: 20 Jul 2007, 10:18
Location: Timisoara
Contact:

Re: cod naspa

Post by MrSmersh » 04 Feb 2009, 13:23

Ba chiar daca l-am inteles bine merge si merge.... :biggrin:



User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: cod naspa

Post by Ovidiu Cucu » 04 Feb 2009, 16:08

Silviu Ardelean wrote:Important e ca, chiar si acest cod, functioneaza... :biggrin:
Da, dar cand ai jdemii de (feluri de) "event"-uri din astea care se bulucesc la coada si freaca heap-ul iar pe deasupra sunt si pe embedded, merje dar... se cheama "cod naspa".
Nu c-as fi eu mai catolic decat papa dar daca se poate mai bine de ce sa facem cum e mai rau de dragul unui "java habit"? ;)
Oricum e bine cand nu se uita "delete" (in incercarea de a scula din somn pe nenea garbage colector). :biggrin:

[ later edit ]
De multe ori dupa comanda "foc event", cine prinde ghiuleaua face repde o clona... tot in heap. :)

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: cod naspa

Post by Ovidiu Cucu » 26 Jun 2009, 15:11

Code: Select all

void onSomeEvent(time_t timeStamp)
{
    // timeStamp is in seconds so convert to nanoseconds for a better resolution.
    time_t fineTime = timeStamp * 10e9;
    // ... 
}
Nu beau la serviciu dar cand am vazut minunea asta era sa cad sub birou... :biggrin:

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: cod naspa

Post by Marius Bancila » 26 Jun 2009, 15:30

Nu stiu daca sa rad sau sa plang. :?
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: cod naspa

Post by Ovidiu Cucu » 16 Jul 2009, 10:15

Culmea curateniei

Code: Select all

CFoo::~CFoo()
{
    m_nValue = 0;
    m_strValue = "";
    // ...and so on...
}

Viorel
Microsoft MVP
Microsoft MVP
Posts: 292
Joined: 13 Jul 2007, 12:26

Re: cod naspa

Post by Viorel » 16 Jul 2009, 11:05

(Probabil ar avea sens în cazul execuţiei manuale a destructorului şi reutilizării ulterioare a obiectului).

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: cod naspa

Post by Ovidiu Cucu » 16 Jul 2009, 23:51

Viorel, cred ca ceva imi scapa. Stiu ca in C++ "everything is possible" dar... ce-ar vrea un C++ist normal sa reutilizeze dintr-un obiect distrus (manual sau nu) cu un destructor?

User avatar
Silviu Ardelean
Senior
Senior
Posts: 1175
Joined: 12 Jul 2007, 09:22
Judet: Timiş
Location: Timisoara
Contact:

Re: cod naspa

Post by Silviu Ardelean » 16 Jul 2009, 23:57

Continuand ideea lui Ovidiu, daca cineva, cu toate tziglele pe casa, doreste sa pastreze propietatile unui obiect mi s-ar pare normal sa foloseasca un copy constructor sau operatorul de atribuire. :)
Cu toate astea... exista unii care pot sa gandeasca, si cum a intuit Viorel. De fapt, el, cred ca a incercat sa gaseasca o explicatie plauzibila la o astfel de idee neinspirata.

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: cod naspa

Post by Marius Bancila » 17 Jul 2009, 00:10

Ovidiu Cucu wrote:Viorel, cred ca ceva imi scapa. Stiu ca in C++ "everything is possible" dar... ce-ar vrea un C++ist normal sa reutilizeze dintr-un obiect distrus (manual sau nu) cu un destructor?
Pai destructorul nu e decat un loc de clean-up pt. obiect. Nu sterge si memoria alocata. Daca faci placement new trebuie sa aloci si sa dezaloci manual memoria, independent de apelul constructorului si destructorului. Practic poti continua sa folosesti obiectul dupa apelarea manuala a destructorului in cazul asta.

De ce ai face asa ceva? N-as putea sa-mi dau seama. ;)
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

Viorel
Microsoft MVP
Microsoft MVP
Posts: 292
Joined: 13 Jul 2007, 12:26

Re: cod naspa

Post by Viorel » 17 Jul 2009, 08:55

Se pare că destructorul e o funcţie care poate fi apelată manual la fel ca celelalte, indiferent de modul de creare a obiectului, în scopul re-iniţializării obiectului. De obicei în acest scop se creează o funcţie de tip Clear, dar şi execuţia explicită a destructorului nu este interzisă de limbaj (probabil intenţionat -- în special pentru cazul placement new). Este o situaţie mai rară. De obicei se presupune că destructorul va fi executat o singură dată automat, prin urmare o instrucţiune de tip „delete p” scrisă în destructor adesea nu este urmată şi de „p = NULL”, care însă ar fi necesară dacă destructorul ar fi executat şi în mod manual.

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: cod naspa

Post by Ovidiu Cucu » 23 Dec 2009, 10:51

Code: Select all

    delete new CFoo;
Nu, nu.... Nu-i "greseala de tipar".

// cui ii descopera minunata (in)utilitate, o bere virtuala :D.

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: cod naspa

Post by Marius Bancila » 23 Dec 2009, 12:43

Ovidiu Cucu wrote:

Code: Select all

    delete new CFoo;
Nu, nu.... Nu-i "greseala de tipar".

// cui ii descopera minunata (in)utilitate, o bere virtuala :D.
Posibil ca in constructorul lui CFoo sa se intample niste chestii care afecteaza global actiunea programului. De exemplu sa creeze ceva in registry, sau sa creeze un fisier, sau alte chestii dinastea.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: cod naspa

Post by Ovidiu Cucu » 23 Dec 2009, 13:26

Am vazut si constructori din astia care fac tot... Totusi exemplul pe care l-am dat avea alt scop.
Face parte din eforturile disperate de a scoate "coverage" la analiza dinamica a programelor scrise cu picioarele.
Mai pe inteles: se cheama "fortat" un constructor si-un destructor care nu se apeleaza in nici un scenariu.

// vremea trece, leafa merge... :D ;)

User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: cod naspa

Post by Marius Bancila » 23 Dec 2009, 19:04

Asta e chiar strigrator la cer. Uneori imi pare rau ca nu pot da palme celor care fac astfel de aberatii.

Pai si daca CFoo ala nu se apeleaza in nici un scenariu la ce mai foloseste? De ce nu scos din proiect? Vai, vai...
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: cod naspa

Post by Ovidiu Cucu » 14 Feb 2010, 23:26

Marius Bancila wrote: Pai si daca CFoo ala nu se apeleaza in nici un scenariu la ce mai foloseste? De ce nu scos din proiect? Vai, vai...
Pe vremea cand eram student, un prof spunea asa "Daca as fi eu decan, pe cei din biblioteca i-as aduce la decanat iar pe cei de la decanat i-as trimite la biblioteca". :D
Sper ca-i clara o parafraza in cazul de fata... ;)

Post Reply