Ĺadny brzuch
Mam funkcję, która zwraca string* (a konkretnie tablicę stringów). Potem to, co zwróci mi ta funkcja dodaje do vectora. Następnie chcę sobie 'wypisać' w konsoli zawartość tego vectora. Niestety - nie udaje się. Program się kompiluje, ale zaraz po uruchomieniu wyrzuca mi błąd, że przekroczono dozwolony obszar pamięci, czy jakoś tak. Podejrzewam, że coś jest nie tak z indeksami tablic. Błąd wyskakuje mi za każdym razem, kiedy chcę się odwołac do wektora. Oto kod programu: http://rafb.net/past...s/Ucc2Jj30.html
Tutaj jest kod programu, w którym dokonałem małych zmian (dodawanie do wektora i 'drukowanie' jego zawartości odbywa się w jednej pętli). http://rafb.net/past...s/RlZ1lm60.html
Jednak chcę, żeby kod był zbliżony do tego pierwszego - potrzebuje to zrobić w kilku pętlach, ponieważ już w 'prawdziwym' programie właśnie tak to się będzie odbywać. Jeśli ktoś wie jak mi pomóc, to b. bym prosił.
dejklarujesz tablicę w funkcji(na stosie). spróbuj tak:
string* zwroc(string imie) { string* tab=new string[2]; tab[0]=imie; tab[1]="kowalski"; return tab; }
Użytkownik gokudbz edytował ten post 21 marzec 2005, 20:48
hehe. Tak wiele, a tak niewiele. :D:D:D ... Dzięki!! A tak na marginesie, to lepiej jest deklarować obiekty w standardowy sposob, czy posługiwać się new/delete. Bo obiekty deklarowane w standardowy sposób są usuwane z pamięci dopiero podczas zakańczania programu, tak? Jeszcze raz dzięki!
hehe. Tak wiele, a tak niewiele. :D:D:D ... Dzięki!! A tak na marginesie, to lepiej jest deklarować obiekty w standardowy sposob, czy posługiwać się new/delete. Bo obiekty deklarowane w standardowy sposób są usuwane z pamięci dopiero podczas zakańczania programu, tak? Jeszcze raz dzięki!
Ale dlaczego jak użyłem new/delete to zadziałało, a przedtem nie?
//a wiesz może jak to rozwiązać? http://forum.ks-eksp...topic=36603&hl= ??
Użytkownik sopel edytował ten post 21 marzec 2005, 21:04
Ale dlaczego jak użyłem new/delete to zadziałało, a przedtem nie? bo wczesniej zwracales wskaznik do tablicy utworzonej na stosie. po wyjsciu z funkcji tablica byla "niszczona" i zwracany wskaznik pokazywal na smieci...
co do problemu to mozesz "opakowac" zwracana wartosc w strukture i ja zwracac zamiast dwuelementowej tablicy. po miesiacu juz nikt nie bedzie pamietal co oznacza to string* w funkcji zwroc, czy to jest wskaznik do jednego stringa do dwoch, pieciu, co jest na kolejnych pozycjach tablicy...
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Tutaj jest kod programu, w którym dokonałem małych zmian (dodawanie do wektora i 'drukowanie' jego zawartości odbywa się w jednej pętli). http://rafb.net/past...s/RlZ1lm60.html
Jednak chcę, żeby kod był zbliżony do tego pierwszego - potrzebuje to zrobić w kilku pętlach, ponieważ już w 'prawdziwym' programie właśnie tak to się będzie odbywać. Jeśli ktoś wie jak mi pomóc, to b. bym prosił.
dejklarujesz tablicę w funkcji(na stosie). spróbuj tak:
string* zwroc(string imie) { string* tab=new string[2]; tab[0]=imie; tab[1]="kowalski"; return tab; }
Użytkownik gokudbz edytował ten post 21 marzec 2005, 20:48
hehe. Tak wiele, a tak niewiele. :D:D:D ... Dzięki!! A tak na marginesie, to lepiej jest deklarować obiekty w standardowy sposob, czy posługiwać się new/delete. Bo obiekty deklarowane w standardowy sposób są usuwane z pamięci dopiero podczas zakańczania programu, tak? Jeszcze raz dzięki!
hehe. Tak wiele, a tak niewiele. :D:D:D ... Dzięki!! A tak na marginesie, to lepiej jest deklarować obiekty w standardowy sposob, czy posługiwać się new/delete. Bo obiekty deklarowane w standardowy sposób są usuwane z pamięci dopiero podczas zakańczania programu, tak? Jeszcze raz dzięki!

Ale dlaczego jak użyłem new/delete to zadziałało, a przedtem nie?
//a wiesz może jak to rozwiązać? http://forum.ks-eksp...topic=36603&hl= ??
Użytkownik sopel edytował ten post 21 marzec 2005, 21:04
Ale dlaczego jak użyłem new/delete to zadziałało, a przedtem nie? bo wczesniej zwracales wskaznik do tablicy utworzonej na stosie. po wyjsciu z funkcji tablica byla "niszczona" i zwracany wskaznik pokazywal na smieci...
co do problemu to mozesz "opakowac" zwracana wartosc w strukture i ja zwracac zamiast dwuelementowej tablicy. po miesiacu juz nikt nie bedzie pamietal co oznacza to string* w funkcji zwroc, czy to jest wskaznik do jednego stringa do dwoch, pieciu, co jest na kolejnych pozycjach tablicy...