On Tue, Jun 15, 2004 at 04:42:05PM +0300, Andrey Andreev wrote: > Peter Pentchev wrote: > > >Май в оригиналния пример str беше масив, не указател :) > > Името на масива е указател към началото му. str[2] е синоним на (str+2)*
Мда, а ще ми намериш ли компилатор, който при декларация char str[255] да позволява str++, което ти беше написал (и сега снипна) и срещу което аз всъщност възразих? :) > >>Е, разбира се, не може да се каже че това е добър стил, а и оставяме > >>празно място, но е по-бързо. 8) > > > > > >И какво правим после, когато се опитаме да направим free(sym)? ;) > > sym[] е алокирано статично - като локална променлива (т.е. в стека). Не > можеш да му направиш free. Т.е. можеш, но най-вероятно ще получиш > segfault или друга подобна красота. free е само за работи алокирани с > malloc, calloc или realloc (функциите за работа с heap-а) ...и ако е алокиран статично (като char sym[255], а не char *sym), не можеш да направиш sym++... а ако можеш да направиш sym++, то sym не е алокиран статично, и значи или сочи към нещо, което *на друго място* е алокирано статично, или сочи към динамично заделена памет... в който случай, ако направиш sym++ и по-късно се опиташ да я освободиш, резилтатът ще е много подобен на неща, които виждаме в последната година в BugTraq :) Но Дончо май е прав, че това е малко или повече (май повече) off-topic. Поздрави, Петър -- Peter Pentchev [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] PGP key: http://people.FreeBSD.org/~roam/roam.key.asc Key fingerprint FDBA FD79 C26F 3C51 C95E DF9E ED18 B68D 1619 4553 No language can express every thought unambiguously, least of all this one.
pgp7lAZkFYTRA.pgp
Description: PGP signature
