[완료]포인터 관련

asleea의 이미지

	int i;
	skb_list_t *skb;
 
	dbg("plusb_alloc");
 
	for(i=0 ; i < _SKB_NUM ; i++) {
		skb=kmalloc(sizeof(skb_list_t), GFP_KERNEL);
		if(!skb) {
			err("kmalloc for skb_list failed");
			goto reject;
		}
		memset(skb, 0, sizeof(skb_list_t));
		list_add(&skb->skb_list, &s->free_skb_list);
	}

두번째 줄에 skb_listT *skb; , skb가 포인터로 선언되었습니다.
그리고 마지막번째 줄을 보면 &skb->skb_list 라는 부분이 나오는데

포인터로 선언 되었을경우 skn->skb_list가 맞지 안나요 .?

익명 사용자의 이미지

해당 수식은 skb의 맴버 변수인 skb_list의 주소값을 구하는 수식입니다. -> 가 연산자 우선순위상 더 먼저 실행이 되지요.
결국 list_add가 요구하는 매개변수의 타입이 뭐냐, 그리고 skb_list의 타입이 뭐냐에 따라 다르겠지요.
아마도 list_add가 skb_list의 값까지 변화시킬 필요가 있으니... 위와 같은 코드가 되었을 겁니다.

asleea의 이미지

궁굼증이 해소되었습니다 .감사합니다 .^^