Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

alociranje memorije i destruktori (zadatak)
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Računarski praktikum 1
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
glava
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 28. 03. 2007. (18:48:16)
Postovi: (89)16
Spol: muško
Sarma = la pohva - posuda
= 8 - 3

PostPostano: 9:49 pet, 15. 5. 2009    Naslov: alociranje memorije i destruktori Citirajte i odgovorite

U sljedecem kodu:

[code:1]struct broj {
int a;
broj (int x) {
a = x;
cout << "pocetak" << endl;
}
~broj () {
cout << "kraj" << endl;
}
};

int main () {
broj *a[2];
a[0] = new broj(2);
a[1] = new broj(3);
cout << a[0]->a << ", " << a[1]->a << endl;
delete a[0], a[1];
return 0;
}[/code:1]

ne unistava mi se ovaj a[1], nego samo a[0]... Što je tu krivo? Kako bi trebao napisati da mi se unisti i a[1]?

hvala
U sljedecem kodu:

Kod:
struct broj {
    int a;
    broj (int x) {
        a = x;
        cout << "pocetak" << endl;
    }
    ~broj () {
        cout << "kraj" << endl;
    }
};

int main () {
    broj *a[2];
    a[0] = new broj(2);
    a[1] = new broj(3);
    cout << a[0]->a << ", " << a[1]->a << endl;
    delete a[0], a[1];
    return 0;
}


ne unistava mi se ovaj a[1], nego samo a[0]... Što je tu krivo? Kako bi trebao napisati da mi se unisti i a[1]?

hvala


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 10:31 pet, 15. 5. 2009    Naslov: Citirajte i odgovorite

[code:1]delete a[1];
delete a[0];[/code:1]

Tako radi :D

A još ću malo pogledat kak to napravit u jednoj liniji 8)

[size=9][color=#999999]Added after 16 minutes:[/color][/size]

Evo vidi ovak nešto:

[code:1]
#include <iostream>

using namespace std;

struct broj {
int b;
broj (int x=0) {
b = x;
cout << "pocetak" << endl;
}
~broj () {
cout << "kraj" << endl;
}
};

void ispis( broj *a ,int n)
{
for (int i=0;i<n;i++)
cout<<" "<<a[i].b<<" ";
cout<<endl;
}

int main () {
broj *a;
a = new broj[2];
a[0].b = 2;
a[1].b = 3;

ispis(a,2);

delete[] a;

return 0;
}
[/code:1]

Stavio sam u strukturu b umjesto a, da ne bude zbunjujuće, i u konstruktor predefiniranu vrijednost, tek toliko da se može pozvat [tt]a = new broj[2]; [/tt] (tu se radi polje od 2 broja i za svaki se poziva defaultni konstruktor). Sad ne treba za a[0] i a[1] [tt]new[/tt] jer su već dinamički alocirani (kao članovi polja). Na kraju ide samo delete za polje i on uništi jedan po jedan.

:D
Kod:
delete a[1];
delete a[0];


Tako radi Very Happy

A još ću malo pogledat kak to napravit u jednoj liniji Cool

Added after 16 minutes:

Evo vidi ovak nešto:

Kod:

#include <iostream>

using namespace std;

struct broj {
    int b;
    broj (int x=0) {
        b = x;
        cout << "pocetak" << endl;
    }
    ~broj () {
        cout << "kraj" << endl;
    }
};

void ispis( broj *a ,int n)
{
    for (int i=0;i<n;i++)
     cout<<" "<<a[i].b<<" ";
    cout<<endl;     
}

int main () {
    broj *a;
    a = new broj[2];
    a[0].b = 2;
    a[1].b = 3;
   
    ispis(a,2);
   
    delete[] a;
   
    return 0;
}


Stavio sam u strukturu b umjesto a, da ne bude zbunjujuće, i u konstruktor predefiniranu vrijednost, tek toliko da se može pozvat a = new broj[2]; (tu se radi polje od 2 broja i za svaki se poziva defaultni konstruktor). Sad ne treba za a[0] i a[1] new jer su već dinamički alocirani (kao članovi polja). Na kraju ide samo delete za polje i on uništi jedan po jedan.

Very Happy



_________________
"Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
glava
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 28. 03. 2007. (18:48:16)
Postovi: (89)16
Spol: muško
Sarma = la pohva - posuda
= 8 - 3

PostPostano: 15:16 pet, 15. 5. 2009    Naslov: Citirajte i odgovorite

[quote]
Kod:
delete a[1];
delete a[0];


Tako radi [/quote]

ma ovo mi je dovoljno, to mogu staviti u for petlju.

hvala
Citat:

Kod:
delete a[1];
delete a[0];


Tako radi


ma ovo mi je dovoljno, to mogu staviti u for petlju.

hvala


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Mad Wilson
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 29. 05. 2006. (22:51:14)
Postovi: (121)16
Sarma = la pohva - posuda
23 = 34 - 11

PostPostano: 21:49 pet, 15. 5. 2009    Naslov: Re: alociranje memorije i destruktori Citirajte i odgovorite

[quote="glava"]
ne unistava mi se ovaj a[1], nego samo a[0]... Što je tu krivo? Kako bi trebao napisati da mi se unisti i a[1]?

hvala[/quote]

Operator [tt]delete[/tt] ima veci prioritet od operatora [tt],[/tt] (zarez)...
glava (napisa):

ne unistava mi se ovaj a[1], nego samo a[0]... Što je tu krivo? Kako bi trebao napisati da mi se unisti i a[1]?

hvala


Operator delete ima veci prioritet od operatora , (zarez)...



_________________
1 2 3 4
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Računarski praktikum 1 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Možete otvarati nove teme.
Možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You can attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan