[solved]lista jednokierunkowa ze stringami-malloc

0

Witam,
Muszę napisać prosty program kompresujacy. W tym celu muszę utworzyć tablice kodową z pliku w postaci:

1 
2 
3 
4 
5 
6 
7 
8 
9 010110100110100
10 0000
11 
12 
13 0001
14 
15 
16 
17 

Wtym celu napisałem klasę tablica kodowa która tworzy listę jednokierunkową... no i tu jest problem z funkcją malloc.. bo źle przydziela pamieć. Wpisywałem rozmiar przydzielanej pamięci z górką(z palca) ale to nie ladne a program i tak sie psuje(nie zawiesza się jak wcześniej ale przerywa działanie co dziwne omijając system("pause"); na końcu maina...
no węzeł mojej listy:

struct Node
{   std::string literka;
    std::string code;
    struct Node * nextElement;  
};

typedef struct Node *nodePtr;

Chyba chodzi o stringi... bo zmieniłem na int i było oki.(niestety muszę mieć stringi bo te ciagi zero jednykowe sa czasami długie a poza tym łatwiej mi będzie potem do pliku to wrzucić jako binaria(mam juz funkcję).
String jest typem dynamicznym i chyba dlatego to nie działa dobrze:

temp=(struct Node *) malloc (90);
(po tym jak zalokuje pamieć przypisuje string).

PS.
może jak tworzę obiekt klasy ma ona przypisaną tylo jakąś ilośc pamięci, a jak zaczynam tworzyć listę to wychodze poza nią??
Prosze o pomoc bo cały dzień nad tym siedzę:/

0

Wpisywałem rozmiar przydzielanej pamięci z górką(z palca) ale to nie ladne

Jeśli już to:

temp=(struct Node *) malloc (sizeof(Node));

ale tak zrobić nie możesz, bo Node ma w sobie klasy (2x string), a te muszą mieć wywołane konstruktory. Więc jeśli piszesz w C++, to do alokacji pamięci używaj new, a do zwalniania - delete.

0

no właśnei chodziło mi o sizeof. Wkleiłem przypadkiem moją późniejszą modyfikację (byłem zdesperowany i wpisywałem wartości z palca). Skorzystałem z operatora new i teraz śmiga:) Dzięki [browar]

Ps nie wiem dlaczego sam na to nie wpadłem. Zbyt zasugerowałem się chyba wykładami z czystego C

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