XCHAOS:
začátečník, kterého budeš učit céčko ty, každopádně nabude dojmu, že z C funkce je možné kdykoliv bez rozmyšlení utéct - nikolvek. Zacatecnik, ktereho budu ucit programovat, se nauci tohle:
* Pamet se alokuje pomoci malloc
* Kazdou alokovanou pamet musis uvolnit pomoci free
Co se musi naucit zacatecnik pouzivajici tvuj alokator?
* V nekterych pripadech se pamet alokuje pomoci xchaos_alloc, v ostatnich pripadech pomoci malloc. Pravidlo pro rozliseni techto pripadu je "..." (zhruba odstavec textu).
* Pamet alokovana pomoci malloc se musi uvolnit pomoci free.
* Pamet alokovana pomoci xchaos_alloc se uvolnovat nemusi.
* Pred tim nez pouzijes xchaos_alloc musis spravne clenit kod na forget/remember bloky
* Pokud jsi cetl nejakou knihu o C, tak zapomen na prikaz return jinde nez na konci funkce.
* Pokud jsi cetl nejakou knihu o normalnim C, nezapomen ze break/continue se v nekterych pripadech chovaji jinak nez bys cekal.
* goto a setjmp/longjmp is right out.
Zapomel jsem na neco? Co ti prijde jednodussi?
Ohlede toho prikladu, btw, proc jsi se jeste nenaucil formatovat kod na nyxu? Kdo to po tobe ma cist... 8(
#define foo_CLEANUP if (ptr) free(ptr);if (f) fclose(f);
void foo(void) {
char *ptr=malloc(LEN)
FILE *f=fopen(...)
/* spousta řádků kódu */
if(redguy) {
foo_CLEANUP;
return -1;
}
/* spousta řádků kódu */
foo_CLEANUP;
return vysledek;
}
Takze, kde je dalsi z tech milionu prikladu?