문제

입력이없는 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);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top