CannibalSmith ([info]cannibalsmith) rakstīja [info]koderi kopienā,
@ 2007-01-22 01:46:00

Previous Entry  Add to memories!  Tell a Friend!  Next Entry
funkcijas, kas atgriež char* un atmiņas noplūdes
strtok()

Es pieņemu, šī funkcija ar malloc() palīdzību rada simbolu virkni kaudzē un atgriež pointeri uz to. Tad tak vajag kaut kad viņu atbrīvot ar free(), vai ne? Tas ir, konkrētajā C++ Reference piemērā ir atmiņas noplūde?


(Ierakstīt jaunu komentāru)


[info]smejmoon
2007-01-22 07:02 (saite)
viens statisks buferis tur noteikti ir; atkarīgs no realizācijas. neko free tur nevajag. tiek čakarēts strings, kas iet iekšā.

nelieto strok, par kazlēniņu kļūsi. lieto std::string.

(Atbildēt uz šo) (Diskusija)


[info]cannibalsmith
2007-01-22 07:30 (saite)
:D Bet man jāraksta mājasdarbs iekš C ! Es nedrīkstu lietot C++ paņēmienus.

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]smejmoon
2007-01-22 07:32 (saite)
tad neuztraucies par memorylīkiem. tur to nav.

(Atbildēt uz šo) (Iepriekšējais)


[info]kemune
2007-01-23 10:17 (saite)
nu nekāda statiska bufera, funkcija vienkārši ļauj pastaigāt pa stringu: "The strtok() function returns a pointer to the next token in s1."

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]smejmoon
2007-01-23 10:26 (saite)
f(){
static int next;
}

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]kemune
2007-01-23 10:32 (saite)
ok, līka funkcija, tā nav stateless

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]smejmoon
2007-01-23 10:41 (saite)
nu tas pie LU pasniedzējiem; bet par memorīlīku nav ko uztraukties.

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]cannibalsmith
2007-01-23 10:47 (saite)
Es ir RTU.

(Atbildēt uz šo) (Iepriekšējais)


[info]kemune
2007-01-23 10:33 (saite)
"Because the strtok() function must save state between calls, and you could not have two tokenizers going at the same time, the Single Unix Standard defined a similar function, strtok_r(), that does not need to save state. Its prototype is this:

char *strtok_r(char *s, const char *delimiters, char **lasts);"

(Atbildēt uz šo) (Iepriekšējais)


Neesi iežurnalējies. Iežurnalēties?