ukazatelova aritmetika

Nathan L. Cutler livingston na pha.pvtnet.cz
Sobota Únor 28 03:08:13 CET 1998


On Fri, Feb 27, 1998 at 02:22:54PM +0100, Ales Horak wrote:
> > Uz to tady nedavno bylo, pokud nespecifikujete jinak, tak se
> > takovehle stringy umisti nekam, kam nemate pravo zapisu.
> > Takze kdyztak zkuste --f-writable-strings nebo jak se to
> > jmenuje.
> 
> zrejme jsem natvrdlej, ale kdyz funkce (napr main() ) deklaruje
> retezec *s (unsigned char *s;) tak proc by do nej ta sama funkce
> main() nemela mit pravo zapisu ??

unsigned char *s; deklaruje pouze ukazatel s na nejake misto v pameti.
Retezcem se to stane az po alokaci pameti a umisteni retezce.

Takze funguje spis:

unsigned char *s;
s = malloc(10);
strcpy(s, "123456789");
free(s);

a nebo, pokud pouzivate GNU libc v. 2:

unsigned char *s;
s = strdup("123456789");
free(s);

V druhem pripade je obrovska vyhoda automaticka alokace pameti, coz provadi
knihovni funkce strdup. Ale pokud vim, tato funkce je GNU rozsirenim libc.
Nemusi byt dostupna vsude.

-- 
Nathan L. Cutler <livingston @ pha.pvtnet.cz>    tel.:   ++420-311-671160
Livingston Professional Translations (CZ-ENG)    fax:    ++420-311-671159
* * * When "pretty good" is not enough * * *     mobile: ++420-602-251053


Další informace o konferenci Linux