Как работает txm_module_object_allocate((void**)obj_ptr, sizeof(obj))?
Всякий раз, когда я пытаюсь создать объект (очередь, поток или пул байтов), я могу создать их только путем динамического выделения памяти; это не удается, если я попытаюсь выделить статическую память.
Я не могу найти txm_module_object_allocate
API в любом месте документации.
//Works:
TX_BYTE_POOL* my_byte_pool=NULL;
txm_module_object_allocate(&my_byte_pool, sizeof(TX_BYTE_POOL));
tx_byte_pool_create(my_byte_pool, "Task Pool", free_memory_task, 16*1240);
//Fails:
TX_BYTE_POOL my_byte_pool;
tx_byte_pool_create(&my_byte_pool, "Task Pool", free_memory_task, 16*1240);
Во втором случае я всегда получаю ошибку, tx_byte_pool_create
не смогли.
1 ответ
Да, txm_module_object_allocate ожидает, что первый аргумент будет указателем типа TX_BYTE_POOL . Итак, правильный синтаксис или вызываемая функция - это txm_module_object_allocate(&my_byte_pool, sizeof(TX_BYTE_POOL));