문제
입력이없는 N이 무엇인지 모른다는 점을 제외하고는 Int MyArray [N]의 동등한 것을 찾으려고 노력하고 있습니다.
다음 코드가 작동해야합니까? (Malloc 대신 Kmalloc을 사용해야합니다).
int * pages;
//... later, after we find out n...
pages = (int *)kmalloc(npages * sizeof(int));
GDB를 사용하여 디버깅하면 값 페이지 [0]이 0 인 것 같습니다.
해결책
예. 메모리가 초기화되지 않고 메모리 덩어리에 대한 포인터를 얻습니다.
당신은 필요합니다 memset
초기화하려면 :
memset(pages, 0, npages * sizeof(int));
또한, 내가 착각하지 않는 한 kmalloc
a 두 번째 매개 변수, 할당 할 메모리 유형.
다른 팁
malloc
배열에 할당 된 힙의 일부 위치에 대한 포인터를 반환합니다. 해당 메모리를 초기화하지 않습니다. 당신이 사용할 수있는 calloc
대신에 malloc
메모리를 초기화하도록하려면 (0으로 설정) 또는 사용할 수 있습니다. memset
메모리를 할당하고 메모리를 0으로 설정 한 후에.
당신이 사용하고 있기 때문에 kmalloc
, 당신은 아마 사용해야 할 것입니다 memset
; 나는 그곳이 있다고 믿지 않는다 cmalloc
커널에서 초기 메모리를 할당하기 위해.
또는 커널 기능을 사용할 수 있습니다 Kzalloc:
int * pages;
pages = (int *)kzalloc(npages * sizeof(int), GFP_KERNEL);
제휴하지 않습니다 StackOverflow