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