Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 7 odgovora
  • 3.006 pregleda

Najnovija ↓

Dinamicki objekti - pitanje? 18.01.2007. u 21:48 · pre 240 meseci
izmenjeno 2 puta, poslednji put SuperC 18.01.2007. u 23:52
  1. SuperC18.01.2007. u 23:52zapis iz teksta poruke
  2. SuperC18.01.2007. u 23:52zapis iz teksta poruke
#1
Zanima me sljedece:

zasto je u prvom primjeru, na pitanje koliko se po jednom pozivu funkcije test, netocno daje/oslobadja Byte-a, kao tacan odgovor navodi 4 Bytes, a drugom na isto pitanje kao tacan odgovor navodi 8 Bytes. Evo primjera:

Primjer1:

Code:
void test()
{
int *x;
for (int i=1; i<3; i++)
x= new int [i];

delete [] x;
}



Primjer2:

Code:
void test()
{
int *x;
for (int i=2; i>0; i--)
x= new int [i];

delete [] x;
}
Re: Dinamicni objekti - pitanje? 18.01.2007. u 22:15 · pre 240 meseci #2
Primer 1:
i=1: pravi niz od 1 int (pokazivač na njega biva izgubljen)
i=2: pravi niz od 2 int
i=3: break

neoslobođeno u toku programa: 1 int = 4 bytes, uglavnom

Primer 2:
i=2: pravi niz od 2 int (pokazivač na njega biva izgubljen)
i=1: pravi niz od 1 int
i=0: brek

neoslobođeno u toku programa: 2 int = 8 bytes, uglavnom
Potpis
Ipak se ++uje.
Re: Dinamicni objekti - pitanje? 18.01.2007. u 22:24 · pre 240 meseci #3
arhg !?@#$%^ (do mene)

hvala puno :)

znaci, potrebno je pogledati koja je vrijednost niza i pomnoziti je, ja sam mislio da se iste vrijednosti dodjeljuju po jednoj petlji, a zapravo se funkcija test poziva samo jednom

a sta se desava, kada u zadatku nije niz, npr:

Code:

void test ()
{
int *x;
for (int i=0, i<3; i++){
x = new int;
delete x;
}
}


da li ce ovdje zato sto je nula biti rjesenje nula BYtes?
Re: Dinamicni objekti - pitanje? 18.01.2007. u 22:31 · pre 240 meseci #4
Za razliku od new int[...] koji pravi novi niz, new int pravi samo jedan element i vraća pokazivač na njega. Primeti i razliku kod brisanja:

delete [] x; -- se koristi kada x pokazuje na niz (pa i kada mu je dužina 1)
delete x; -- se koristi kada x pokazuje na jedan element

Znači ovde će biti napravljeno

(n = broj prolazaka kroz petlju) x (1 element)

a program oslobađa samo poslednji napravljeni. Znači ostaje n-1 neoslobođenih int.
Potpis
Ipak se ++uje.
Re: Dinamicni objekti - pitanje? 18.01.2007. u 22:50 · pre 240 meseci #5
Ok. Misha, ti bi trebao biti profesor :)

Imam jos jedno pitanje, da li ovaj zadatak rjesavam kao rekurziju:

Code:

#include <iostream.h>
void main () {
int *ptr = new int [10];

for (int i=0; i<10; i++)
ptr [i] = i;

int *ip = ptr+9;

for (int i=0; i<10; i++)
cout << *ip--;

delete [] ptr;
}


odnosno prvo rjesenje mi je 0+9, zatim sta? dodjem na 10?!
Re: Dinamicki objekti - pitanje? 19.01.2007. u 04:04 · pre 240 meseci #6
Niej ovo rekurzija i ne dodjes na 10!
Pokreni program pa ces i sam videti. ip ti zapravo pokazuje na ptr[9] i onda sa *ip-- u petlji stampas vrednosti niza od p[9] do p[0]. Znaci u obrnutom poretku u odnosu na onaj u kome su unete.
Re: Dinamicki objekti - pitanje? 19.01.2007. u 07:25 · pre 240 meseci #7
to sam mislio, samo sam se lose izrazio, znaci prvo ih unesem, u jednom redoslijedu i onda u obrnutom odstampam.

Moj program izbaci samo gotovo rjesenje. ne i korake. :(
Re: Dinamicki objekti - pitanje? 19.01.2007. u 08:18 · pre 240 meseci
izmenjeno 1 put, poslednji put X Files 19.01.2007. u 16:13
  1. X Files19.01.2007. u 16:13zapis iz teksta poruke
#8
Citat:

...
#include <iostream.h>
...

Kad smo već kod ovoga, pogledaj ovde:
http://www.elitesecurity.org/t236691-0#1418274
(EDIT: Link koji valjda sada radi. Hvala Mali Misha)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme