2016-03-23 7 views
0

В «LDD3, глава 3» показывают нам, что мы можем выделить struct cdev структуру во время выполнения, как это:Как освободить память, выделенную cdev_alloc?

struct cdev *cdev_ptr = cdev_alloc(); 

Но я не знаю, как освободить эту память, потому что cdev_del() кажется, не освободить эту память выделено kzmalloc() в cdev_alloc().

ответ

2

Призывая cdev_del() освободит cdev структуру, созданную cdev_alloc(), автоматически.

Согласно implementation, cdev_alloc() регистрирует специальный обратный вызов для внутреннего кобъекта. Этот обратный вызов вызывается, когда счетчик ссылок объекта падает до нуля и освобождает выделенную память.

Кроме того, description for cdev_del говорит:

/**
* cdev_del() - удалить cdev из системы
* @p: структура cdev быть удалены
*
* cdev_del() удаляет @p из системы, возможно высвобождение структуры
* .
*/

Смежные вопросы