» »

[ C ] Kazalci v strukturah

[ C ] Kazalci v strukturah

Oven-2k ::

Zdravo! Delam en program, pa se v eni vrstici zatakne (čeprav compiler to mirno prebavi in ne javi nobeih opozoril ali napak) in program se sesuje.

Relavanten izvleček iz kode je tak :) :

struct Node{
char Data[255];
struct Node *Left;
struct Node *Right;
};

void Something(struct Node *RootNode)
{
struct Node newNode;
RootNode->Left=&newNode; //NAPAKA SE ZGODI V TEJ VRSTICI???????!!!!!!!!!!!!!!
}


Se komu sanja kje sem ga polomil?

JerKoJ ::

hmm ko znotraj funkcije defineras spremenljiivko se le ta ustvari na stacku in se izbrise ko gres iz funkcije ven
da se temu izognes moras spremenljivko generirat dinamicno na heapu

v tvojem primeru

struct Node *newNode=(struct Node*) malloc(sizeof(struct Node));
RootNode->Left=newNode;

aja pa na konc ne pozab spraznt heapa z free operatorjem
ker se drugac pojav memory leak

Oven-2k ::

Ja :) Sm sam ugotovu, da sm precej stvari pozabu ja. Zdej sm kr napisu novo funkcijo:

struct Node* CreateNode()
{
struct Node* cNode = malloc(sizeof(struct Node));
strcpy(cNode->Data,"");
cNode->Left=NULL;
cNode->Right=NULL;
return cNode;
}

Tako da če rabm kašn nov Node samo pokličem "struct Node nekinovga = CreateNode();"
:D

Pa hvala za odgovor, btw: na free bi čist pozabu brez tvojega nasveta ;)

BigWhale ::

Tam kjer lahko uporabi calloc() je precej bolj varen.

And remeber, free the c/mallocs! ;)

64202 ::

Pa se malenkost bolj varna C++ verzija malloca:
template <class T>
T *cxx_malloc(int num)
{ return (T*) malloc(num * sizeof(T)); }


Tko se pa uporabi:
int *bu = cxx_malloc<int>(30);


Now, how kewl is that!? :)

Oven-2k ::

Hja, bom vedu za takrat ko bom v C++ kej počel. Tole je nažalost samo C kar zdj čaram. Sm pa dokončal pol program uspešno :) In nism pozabu na free :D :D hehe.

64202 ::

Ne to je bolj hec, "pravilno" je:

int *b = new int[30];

in potem

delete [] b;


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Predstavitev dvojiškega drevesa z seznamom

Oddelek: Programiranje
141763 (1363) ktka
»

[C] kazalčni seznam

Oddelek: Programiranje
122863 (2677) MrBrdo
»

[C] Povezani seznami in kazalci

Oddelek: Programiranje
242477 (2044) Good Guy
»

sitemap

Oddelek: Izdelava spletišč
101053 (954) rokpok
»

[NALOGA][C] fri-vsp - strukture (struct)

Oddelek: Programiranje
101464 (1305) Vesoljc

Več podobnih tem