OpenSCADAWiki:
Roman Savochenko
/
C Short All
/
part2
/part9
...
Home
|
Index
|
Changes
|
Comments
|
Users
|
Registration
|
Login
:
Password:
====2.9 функции работы с памятью==== **calloc, malloc, free, realloc (ANSI) <stdlib.c, cstdlib>** //void *calloc(size_t nmemb, size_t size);// //void *malloc(size_t size);// //void free(void *ptr);// //void *realloc(void *ptr, size_t size);// Распределяют и освобождают динамическую память. calloc - выделяет блок памяти с очисткой; malloc - выделяет блок памяти; free - освобождает блок памяти; realloc - меняет размер блока памяти; **delete (C++)** //delete terget;// Освобождает динамическую память, выделенную с помощью оператора new. Кроме того оператор delete активизирует деструктор объекта: %%(php)target *r= new char[256]; delete r; target *r= new char[256]; delete []r;%% **memchr, memrchr (POSIX) <string.h>** //void *memchr(const void *s, int c, size_t n);// //void *memrchr(const void *s, int c, size_t n);// Ищет символ <c> в первых/последних <n> байтах той области памяти, на которую указывает <s>. Совпадение первого байта с <c> (представленным как беззнаковый символ) останавливает выполнение операции. **memcmp (BSD) <string.h>** //int memcmp(const void *s1, const void *s2, size_t n);// Сравнивает первые <n> байтов областей памяти <s1> и <s2>. Возвращается целое число, меньшее, большее нуля или равное ему, если определено, что <s1> меньше, больше, или равно <s2>. **memcpy (BSD) <string.h>** //void *memcpy(void *dest, const void *src, size_t n);// Копирует <n> байтов из области памяти <src> в область памяти <dest>. **memmove (BSD) <string.h>** //void *memmove(void *dest, const void *src, size_t n);// Копирует <n> байтов из области памяти <src> в область памяти <dest>. Области памяти могут перекрываться. **memset (BSD) <string.h>** //void *memset(void *s, int c, size_t n);// Заполняет первые <n> байтов области памяти <s> байтом <c>. **mlock, munlock (POSIX) <sys/mman.h>** //int mlock(const void *addr, size_t len);// //int munlock(const void *addr, size_t len);// Запрещает/разрешает страничный обмен памяти в области, начинающейся с адреса <addr> длиной <len> байтов. **mlockall, munlockall (POSIX) <sys/mman.h>** //int mlockall(int flags);// //int munlockall(void);// Запрещает/разрешает страничный обмен для всех страниц в области памяти вызывающего процесса. **mmap, munmap (POSIX) <unistd.h, sys/mman.h>** //void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);// //int munmap(void *start, size_t length);// mmap - возвращает адрес отражённых <length> байтов, начиная со смещения <offset> файла (или другого объекта), определённого файловым описателем <fd>, в память, начиная с адреса <start>. munmap - удаляет все отражения из заданной области памяти. **mprotect (POSIX) <sys/mman.h>** //int mprotect(const void *addr, size_t len, int prot);// Контролирует доступ <prot> к области памяти <addr> <len>. **msync (POSIX) <unistd.h, sys/mman.h>** //int msync(const void *start, size_t length, int flags);// Записывает на диск изменения, внесенные в файл, отраженный в память при помощи функции mmap. **new (C++)** //Type *array = new Type[256];// Используется для динамического выделения памяти (для размещения объекта в свободной памяти). Указателю array присваивается адрес выделенной памяти или присваивается NULL при её отсутствии. Оператор new автоматически активизирует конструктор объекта. Если определена функция _new_handler то она вызывается при отсутствии памяти. Способы применения оператора new: %%(php)float *r = new float; delete r; float *r = new float(3.14); delete r; float *r = new float[10]; delete []r;%% **set_new_handler (C++) <new.h | new>** //void set_new_handler(void (*VFP)());// Присваивает адресу глобальной переменной _new_handler адрес функции <VFP> обработки ошибок оператора new.
Please type the word you read in the image: