( geza42 | 2021. 03. 27., szo – 14:41 )

Mindenesetre azért csak eljutottunk odáig, hogy nem csinálok baromságot, amikor C-ben validálom a pointereket. :P

Nyilván egy API interface-én érdemes validálni a bemenetet. Az a felhasználási területen múlhat, hogy hogyan teszi meg az ember ezt. Szerintem az assert-et mindig érdemes odatenni. De ha mondjuk egy olyan API-t csinálsz, ami egy lib, ami egy másik programba lesz betéve, akkor lehet, hogy ennél többet nem érdemes csinálni. Ez koncepció kérdése. Viszont ha ez az API mondjuk egy OS-nek a syscalljai, akkor meg le kell ellenőrizni a paramétereket.

Úgy érted, hogy chunk-szinten kezeli a memóriát, ahogy maga a malloc()? Ha igen, akkor azt hogyan hurcolod az OS-ek közt?

Van neki egy backend allocatora, ami szolgáltatni tudja a memóriát. Ebből lehet olyan, ami brk()-val ad memet, vagy éppen mmap-pel, VirtualAlloc-kal, stb. És utána a backend allocator által visszaadott részekbe teszi bele a saját chunk-jait. Szóval össze lehet legózni mindenféle allokátort. Pl., a debug allocator se tud megállni a saját lábán. Van 2 backend allocatora, az egyik, amelyik magát a blokkot foglalja le (opcionálisan sentinellel), és van egy másik, amivel meg a blokkhoz tartozó debug adatok vannak lefoglalva.