Zniszczenie obiektu w pamięci przez tablice?

Odpowiedz Nowy wątek
2011-07-31 22:54
0

Witam.
Mam pytanie - wiem, że dla niektórych odpowiedź jest banalna ale tak czy inaczej proszę o pomoc...
Otóż...załóżmy, że w moim programie użyję C-Stringów.
Tworzę jakiś tam kod później tworzę tablice z 80 elementami typu char i wpisuję do niej jakiś tekst. Później dalej piszę sobie jakiś kod, kompiluję program ale jednak stwierdzam, że tego tekstu w owej tablicy miałby być więcej...co wtedy mam zrobić? Po prostu powiększyć ją zmieniając [80] na np. [180] i dopisać jakiś tekst? Czy wtedy narażę się na utratę jakiś danych?
Jeżeli nie tak, to czy dynamiczna alokacja tablicy jest rozwiązaniem?
Rozumiecie o co mi chodzi?;>


Programista uczy się całe życie....

Pozostało 580 znaków

2011-07-31 23:03
Rev
0

Jeżeli nie polegałeś w funkcji na tym sztywnie ustalonym rozmiarze to nic się nie zepsuje. Ale zdecydowanie lepiej jest użyć dynamicznej alokacji. Musisz tylko pamiętać, żeby później tę pamięć zwolnić.


Pozostało 580 znaków

2011-07-31 23:04
0

Nie rozumiem tego: "Po prostu powiększyć ją zmieniając [80] na np. [180] i dopisać jakiś tekst?"
Gdzie chcesz zmienić ten rozmiar? Da się tylko przy deklaracji - żadnych danych nie stracisz, bo niby w jaki sposób?
Nie napisałeś o jaki język Ci chodzi, jak C++ to rozwiązaniem jest po prostu użycie typu string, a nie zabawa z c-stringami, które z definicji są błędogenne.
Dynamiczna alokacja pamięci też jest rozwiązaniem, nie zawsze najlepszym, ale zawsze jakimś.

//edit: a propos postu Rev: przy powiększaniu może nie polec(zakładając, że funkcja nie potrzebuje zabawy z tym dopisanym tekstem). Dodatkowo używanie w takich wypadkach magic numbers to proszenie się o kłopoty - wypadałoby do ustalania rozmiaru korzystać ze stałych.


edytowany 1x, ostatnio: byku_guzio, 2011-07-31 23:06

Pozostało 580 znaków

2011-07-31 23:28
0
Rev napisał(a)

Jeżeli nie polegałeś w funkcji na tym sztywnie ustalonym rozmiarze to nic się nie zepsuje. Ale zdecydowanie lepiej jest użyć dynamicznej alokacji. Musisz tylko pamiętać, żeby później tę pamięć zwolnić.

no wlaśnie! Sedno sprawy. Jak te pamięć zwolnić? Bo nie mogę tego znaleźć w Symfonii C++..


Programista uczy się całe życie....

Pozostało 580 znaków

2011-08-01 00:45
0

Operatory new i delete, dynamiczna alokacja pamięci - to są podstawy. Jeżeli ta tablica siedzi na stosie, a nie stercie to nie ma takiej możliwości.


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0