C - временная структура с выделением памяти - PullRequest
0 голосов
/ 09 апреля 2020

Предполагается, что в этой структуре есть информация для каждого элемента очереди.

struct tx_queue_item_t {
    //user input
    uint8_t priority;      
    uint8_t attempts;    
    uint8_t *buff;
    size_t size;
    uint32_t timeout;               //10ms base
    //system input
    uint8_t idNum;
    uint8_t attemptCount;
    uint32_t tickCountAtTx;         //to check for receive timeout
    enum tx_queue_status_t status;
};

Я хотел бы знать, могу ли я иметь «временные элементы» (временные структуры), которые освобождают свое собственное использование памяти, когда такой элемент очереди считается выполненным / обработанным.

Есть ли способ сделать это в C? malloc? Учтите, что я также хочу получить доступ к значениям переменных по их именам для каждого экземпляра структуры. А также для того, чтобы я мог знать, какой общий объем памяти используется для этой цели (создавать временные элементы).

С уважением.

1 Ответ

3 голосов
/ 09 апреля 2020

Нет. C не имеет широко реализованных сборщиков мусора. Вы можете использовать внешнюю библиотеку, такую ​​как boehm-g c, но это может быть не то, что вам нужно.

Наиболее переносимым решением будет использование malloc и free вручную или используйте функцию для создания и уничтожения вашей структуры.

...