Update page '1.2. Работа с памятью'
parent
b21d351bef
commit
92f2d1a895
@ -1 +1,29 @@
|
||||
## Работа с памятью
|
||||
## Работа с памятью
|
||||
|
||||
Управление памятью в проекте осуществляется исключительно при помощи функций описанных в [include/extra/memory.h](https://gogs.lirent.ru/lirent/libcdsb/src/master/include/extra/memory.h) и [include/extra/cstring.h](https://gogs.lirent.ru/lirent/libcdsb/src/master/include/extra/cstring.h)
|
||||
|
||||
Вот их полный список:
|
||||
|
||||
- `void* libcdsb_aalloc (size_t a, size_t n)`
|
||||
- `void* libcdsb_malloc (size_t n)`
|
||||
- `void* libcdsb_calloc (size_t n, size_t c)`
|
||||
- `void* libcdsb_realloc(void *p, size_t n)`
|
||||
- `char* libcdsb_strdup (const char* s)`
|
||||
- `char* libcdsb_strndup(const char* s, size_t n)`
|
||||
- `void* libcdsb_memndup(const void* m, size_t n)`
|
||||
|
||||
высвобождение памяти осуществляется системным вызовом
|
||||
|
||||
- `void libcdsb_free(void* s)`
|
||||
|
||||
В случае необходимости изменения принципов работы с памятью, данные символы могут быть подменены пользовательским решением: гарантированно, что иные символы не будут использованы для выделения памяти.
|
||||
|
||||
Отдельным пунктом, можно обозначить служебную структуру **stack_t**, а также методы для работы с ней:
|
||||
|
||||
- `void libcdsb_stack_init (stack_t* stack)`
|
||||
- `void libcdsb_stack_push (stack_t* stack, void* value)`
|
||||
- `void* libcdsb_stack_pop (stack_t* stack)`
|
||||
- `void libcdsb_stack_flush(stack_t* stack)`
|
||||
|
||||
Выделение памяти для этой структуры носит исключительный характер, так как `void libcdsb_stack_push (stack_t* stack, void* value)` использует вызов `void* malloc (size_t n)`. Высвобождение памяти в `void* libcdsb_stack_pop (stack_t* stack)` и `void libcdsb_stack_flush(stack_t* stack)` осуществляется вызовом `void free(void* s)`.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user