Пожалуйста, дайте мне знать, что я сделал неправильно.Как использовать двойной указатель пустоты
У меня есть две структуры
struct a{
few elements;
void **ptr;
};
struct b {
few elements;
};
I tried to allocate memory for these two structures like
func2(struct a *aptr)
{
struct b *bptr = kmalloc(sizeof(struct b), GFP_KERNEL);
aptr->ptr = (void *)&bptr;
// here *(aptr->ptr) is pointing correctly to bptr.
}
func1()
{
struct a *aptr = kmalloc(sizeof(struct a), GFP_KERNEL);
func2(aptr);
/*though aptr->ptr is pointing correctly, *(aptr->ptr) is no more pointing to bptr*/
}
Я пытаюсь таким образом, чтобы я мог эффективно использовать container_of
. Пожалуйста, исправьте меня, если моя реализация неверна.
Наблюдение: Если я объявляю struct b *bptr
вне области действия, *(aptr->ptr)
правильно указывает на bptr.
func1() - основная функция вызова. func1() и func2() могут быть в разных файлах. – Narain
Почему у вас есть 'void **', а не 'void *'? – ypnos
Если я использую void *, я не могу использовать container_of для сохранения адреса aptr. – Narain