ComSDK
 Указатель Классы Пространства имен Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Группы Страницы
Классы | Макросы | Перечисления | Элементы перечислений | Функции
Инструменты для работы с памятью

Модуль предоставляет средства для выделенения и освобождения памяти, инициализации и копирования различных структур данных, используемых в приложениях фреймворка. Подробнее...

Граф связей класса Инструменты для работы с памятью:

Классы

class  com::mem::fnc_Deleter< DataType >
 Функциональный класс для освобождения памяти Подробнее...
 
class  com::mem::cls_oneDimArray< DATATYPE >
 Класс одномерного массива Подробнее...
 
class  com::mem::cls_twoDimArray< DATATYPE >
 Класс двухмерного массива Подробнее...
 

Макросы

#define MAC_MEMRELEASE(A)   {if (A!=NULL) delete A; A = NULL;}
 
#define MAC_ARRRELEASE(A)   {if (A!=NULL) delete[] A; A = NULL;}
 
#define MEM_NULL_INIT_VALUE   111
 
#define MEM_NULL_INIT_ARRAY   112
 

Перечисления

enum  com::mem::enu_MultiDimArrayType { com::mem::mdaNotInitialized, com::mem::mdaValue, com::mem::mdaIdentity, com::mem::mdaArray }
 Набор параметров, определяющих как нужно инициализировать многомерный массив. Подробнее...
 

Функции

void com::mem::fnc_Deleter< DataType >::operator() (DataType *p_data)
 
template<class T >
void com::mem::tmp_ReleaseList (std::list< T * > *&o_list)
 
template<class T >
void com::mem::tmp_ReInitList (std::list< T > *&o_list)
 
template<class T >
void com::mem::tmp_ReInitPtrList (std::list< T * > *&v_list)
 
template<class T >
void com::mem::tmp_ReleaseTree (tree< T * > *&o_tree)
 
template<class T >
void com::mem::tmp_CopyList (std::list< T * > &o_dest, std::list< T * > &p_source)
 
template<typename DataType >
void com::mem::copyTwoDimArray (DataType **o_res, DataType **const p_orig, int p_rows, int p_cols)
 
template<class T >
int com::mem::tmp_reinitOneDimArray (T *&o_array, bool p_createNew, int p_dim, enu_MultiDimArrayType p_init_type, T *p_init_value)
 
template<class T >
int com::mem::tmp_reinitOneDimArray (T *&out, bool p_createNew, int p_dim, const T &p_init_value=T(0))
 
template<class T >
int com::mem::tmp_reinitTwoDimArray (T **&o_array, bool p_create_new, int p_rows, int p_cols, enu_MultiDimArrayType p_init_type, T **p_init_value)
 
template<class T >
int com::mem::tmp_reinitTwoDimArray (T **&p_out, bool p_createNew, int p_rows, int p_cols, const T &p_init_value=T(0))
 
template<class T >
T * com::mem::createOneDimArray (int p_dim, enu_MultiDimArrayType p_init_type, T *p_init_array=NULL)
 
template<class T >
T ** com::mem::createTwoDimArray (int p_rows, int p_cols, enu_MultiDimArrayType p_init_type, T **p_init_value=NULL)
 
template<class T >
int com::mem::tmp_reinitThreeDimArray (T ***&o_array, bool p_create_new, int p_dim1, int p_dim2, int p_dim3, enu_MultiDimArrayType p_init_type, T ***p_init_value)
 
template<class T >
int com::mem::tmp_reinitThreeDimArray (T ***&o_out, bool p_create_new, int p_dim1, int p_dim2, int p_dim3, const T &p_init_value=T(0))
 
template<class T >
T *** com::mem::createThreeDimArray (int p_dim1, int p_dim2, int p_dim3, const T &p_init_value=T(0))
 
template<class T >
T *** com::mem::createThreeDimArray (int p_dim1, int p_dim2, int p_dim3, enu_MultiDimArrayType p_init_type, T ***p_init_value=NULL)
 
template<class T >
T * com::mem::createOneDimArray (int p_dim, const T &p_init_value=T(0))
 
template<class T >
T ** com::mem::createTwoDimArray (int p_rows, int p_cols, const T &p_init_value=T(0))
 
template<class T >
void com::mem::freeTwoDimArray (T **&o_ptr, int p_rows)
 
template<class T >
void com::mem::freeThreeDimArray (T ***o_ptr, int p_dim1, int p_dim2)
 
 com::mem::cls_oneDimArray< DATATYPE >::cls_oneDimArray (int p_dim1)
 
DATATYPE * com::mem::cls_oneDimArray< DATATYPE >::data ()
 
 com::mem::cls_twoDimArray< DATATYPE >::cls_twoDimArray (int p_dim1, int p_dim2)
 
DATATYPE ** com::mem::cls_twoDimArray< DATATYPE >::data ()
 

Подробное описание

Модуль предоставляет средства для выделенения и освобождения памяти, инициализации и копирования различных структур данных, используемых в приложениях фреймворка.

Макросы

#define MAC_ARRRELEASE (   A)    {if (A!=NULL) delete[] A; A = NULL;}

Макрос для освобождения выделенной памяти под массив с обнулением указателя

#define MAC_MEMRELEASE (   A)    {if (A!=NULL) delete A; A = NULL;}

Макрос для освобождения выделенной памяти с обнулением указателя

Перечисления

Набор параметров, определяющих как нужно инициализировать многомерный массив.

Элементы перечислений
mdaNotInitialized 

Массив не следует инициализировать

mdaValue 

Массив следует инициализировать одним заданным значением

mdaIdentity 

где N - размерность массива, а i1,i2,...,iN - индексы элементов по каждой размерности

Массив следует иницилизировать единицами для i1=i2=...=iN,

mdaArray 

Массив следует инициализировать данными из другого массива (аналог копирующего конструктора для классов)

Функции

template<typename DataType >
void com::mem::copyTwoDimArray ( DataType **  o_res,
DataType **const  p_orig,
int  p_rows,
int  p_cols 
)

Копирует данные из одного двухмерного массива в другой

Аргументы
[out]o_resУказатель на результирующий массив
[in]p_origУказатель на исходный массив
[in]p_rowsКоличество строк
[in]p_colsКоличество столбцов
Возвращает
Код ошибки
template<class T >
T* com::mem::createOneDimArray ( int  p_dim,
enu_MultiDimArrayType  p_init_type,
T *  p_init_array = NULL 
)

Создает одномерный массив

Аргументы
[out]o_outУказатель на массив
[in]p_dimРазмер массива
[in]p_init_typeТип инициализации
[in]p_init_arrayУказатель на массив инициализации
Возвращает
Указатель на массив
template<class T >
T* com::mem::createOneDimArray ( int  p_dim,
const T &  p_init_value = T(0) 
)

Создает одномерный массив, инициализируемый указанным значением

Аргументы
[in]p_dimРазмер массива
[in]p_init_arrayЗначение для инициализации
Возвращает
Указатель на массив
template<class T >
T*** com::mem::createThreeDimArray ( int  p_dim1,
int  p_dim2,
int  p_dim3,
const T &  p_init_value = T(0) 
)

Создает трехмерный массив, инициализируемый указанным значением

Аргументы
[in]p_dim1Размер массива по первой координате
[in]p_dim2Размер массива по второй координате
[in]p_dim3Размер массива по третьей координате
[in]p_init_valueЗначение для инциализации
Возвращает
Указатель на трехмерный массив
template<class T >
T*** com::mem::createThreeDimArray ( int  p_dim1,
int  p_dim2,
int  p_dim3,
enu_MultiDimArrayType  p_init_type,
T ***  p_init_value = NULL 
)

Создает трехмерный массив

Аргументы
[in]p_dim1Размер массива по первой координате
[in]p_dim2Размер массива по второй координате
[in]p_dim3Размер массива по третьей координате
[in]p_init_typeТип инициализации
[in]p_init_valueУказатель на значение для инциализации
Возвращает
Указатель на трехмерный массив
Необходимо сделать:
отладить !!!
template<class T >
T** com::mem::createTwoDimArray ( int  p_rows,
int  p_cols,
enu_MultiDimArrayType  p_init_type,
T **  p_init_value = NULL 
)

Создает двухмерный массив

Аргументы
[in]p_rowsКоличество строк
[in]p_colsКоличество столбцов
[in]p_init_typeТип инициализации
[in]p_init_valueЗначение для инциализации
Возвращает
Указатель на двухмерный массив
template<class T >
T** com::mem::createTwoDimArray ( int  p_rows,
int  p_cols,
const T &  p_init_value = T(0) 
)

Создает двухмерный массив, инициализируемый указанным значением

Аргументы
[in]p_rowsКоличество строк
[in]p_colsКоличество столбцов
[in]p_init_arrayЗначение для инициализации
Возвращает
Указатель на массив
template<class T >
void com::mem::freeThreeDimArray ( T ***  o_ptr,
int  p_dim1,
int  p_dim2 
)

Освобождает память, занятую трехмерным массивом

Аргументы
[in,out]o_ptrТрехмерный массив
[in]p_dim1Размер массива по первой координате
[in]p_dim2Размер массива по второй координате
template<class T >
void com::mem::freeTwoDimArray ( T **&  o_ptr,
int  p_rows 
)

Освобождает память, занятую двухмерным массивом

Аргументы
[in,out]o_ptrДвухмерный массив
[in]p_rowsКоличество строк
template<class T >
void com::mem::tmp_CopyList ( std::list< T * > &  o_dest,
std::list< T * > &  p_source 
)

Копирование std::list Освобождает память, занятую tree и всеми его элементами

Аргументы
[out]o_destУказатель на std::list, в который будет скопирована информация
[in]p_sourceУказатель на исходный std::list
template<class T >
void com::mem::tmp_ReInitList ( std::list< T > *&  o_list)

Реинициализирует std::list (удаляет старый и создает новый)

Аргументы
[in,out]o_listУказатель на std::list
template<class T >
int com::mem::tmp_reinitOneDimArray ( T *&  o_array,
bool  p_createNew,
int  p_dim,
enu_MultiDimArrayType  p_init_type,
T *  p_init_value 
)

Реинициализирует одномерный массив

Аргументы
[out]o_arrayУказатель на массив
[in]p_createNewСоздать ли новый массив или работать с исходным
[in]p_dimРазмер массива
[in]p_init_typeТип инициализации
[in]p_init_valueЗначение для инциализации
Возвращает
Код ошибки
template<class T >
int com::mem::tmp_reinitOneDimArray ( T *&  out,
bool  p_createNew,
int  p_dim,
const T &  p_init_value = T(0) 
)

Реинициализирует одномерный массив указанным значением

Аргументы
[out]o_outУказатель на массив
[in]p_createNewСоздать ли новый массив или работать с исходным
[in]p_dimРазмер массива
[in]p_init_valueЗначение для инциализации
Возвращает
Код ошибки
template<class T >
void com::mem::tmp_ReInitPtrList ( std::list< T * > *&  v_list)

Реинициализирует std::list указателей (удаляет старый вместе со всеми его элементами и создает новый)

Аргументы
[in,out]o_listУказатель на std::list
template<class T >
int com::mem::tmp_reinitThreeDimArray ( T ***&  o_array,
bool  p_create_new,
int  p_dim1,
int  p_dim2,
int  p_dim3,
enu_MultiDimArrayType  p_init_type,
T ***  p_init_value 
)

Реинициализирует трехмерный массив

Аргументы
[out]o_arrayТрехмерный массив
[in]p_create_newСоздать ли новый массив или работать с исходным
[in]p_dim1Размер массива по первой координате
[in]p_dim2Размер массива по второй координате
[in]p_dim3Размер массива по третьей координате
[in]p_init_typeТип инициализации
[in]p_init_valueУказатель на значение для инциализации
Возвращает
Код ошибки
Необходимо сделать:
отладить !!!
template<class T >
int com::mem::tmp_reinitThreeDimArray ( T ***&  o_out,
bool  p_create_new,
int  p_dim1,
int  p_dim2,
int  p_dim3,
const T &  p_init_value = T(0) 
)

Реинициализирует трехмерный массив указанным значением

Аргументы
[out]o_outТрехмерный массив
[in]p_create_newСоздать ли новый массив или работать с исходным
[in]p_dim1Размер массива по первой координате
[in]p_dim2Размер массива по второй координате
[in]p_dim3Размер массива по третьей координате
[in]p_init_typeТип инициализации
[in]p_init_valueЗначение для инциализации
Возвращает
Код ошибки
template<class T >
int com::mem::tmp_reinitTwoDimArray ( T **&  o_array,
bool  p_create_new,
int  p_rows,
int  p_cols,
enu_MultiDimArrayType  p_init_type,
T **  p_init_value 
)

Реинициализирует двухмерный массив

Аргументы
[out]o_arrayУказатель на массив
[in]p_create_newСоздать ли новый массив или работать с исходным
[in]p_rowsКоличество строк
[in]p_colsКоличество столбцов
[in]p_init_typeТип инициализации
[in]p_init_valueУказатель на значение для инциализации
Возвращает
Код ошибки
Необходимо сделать:
отладить !!!
template<class T >
int com::mem::tmp_reinitTwoDimArray ( T **&  p_out,
bool  p_createNew,
int  p_rows,
int  p_cols,
const T &  p_init_value = T(0) 
)

Реинициализирует двухмерный массив заданным значением

Аргументы
[out]o_outУказатель на массив
[in]p_createNewСоздать ли новый массив или работать с исходным
[in]p_rowsКоличество строк
[in]p_colsКоличество столбцов
[in]p_init_valueЗначение для инциализации
Возвращает
Код ошибки
template<class T >
void com::mem::tmp_ReleaseList ( std::list< T * > *&  o_list)

Освобождает память, занятую std::list и всеми его элементами (т.е. для std::list и всех его элементов будет оператор delete)

Аргументы
[in,out]o_listУказатель на std::list
template<class T >
void com::mem::tmp_ReleaseTree ( tree< T * > *&  o_tree)

Освобождает память, занятую tree и всеми его элементами

Аргументы
[in,out]o_treeУказатель на tree