使用kmalloc分配内存并打印内存地址
时间: 2024-08-15 22:04:27 浏览: 91
在Linux内核编程中,`kmalloc`主要用于为内核数据结构分配内存。下面是一个简单的示例,演示如何使用`kmalloc`分配内存,并打印出分配的内存地址:
```c
#include <linux/module.h>
#include <linux/kmalloc.h>
#include <stdio.h>
void print_memory_address(void *ptr) {
printf("Memory address: %p\n", ptr);
}
int main(void) {
size_t size = sizeof(char *);
char *ptr;
ptr = kmalloc(size, GFP_ATOMIC); // kmalloc for kernel space
if (!ptr) {
pr_info("Failed to allocate memory using kmalloc.\n");
return -ENOMEM;
}
print_memory_address(ptr); // Print the allocated address
// Use the allocated memory here...
// Remember to free it later with kfree()
kfree(ptr); // Free the allocated memory
return 0;
}
module_init(kernel_init);
module_exit(kernel_exit);
MODULE_LICENSE("GPL");
```
在这个示例中,我们首先定义了一个`print_memory_address`函数,它接收内存地址作为参数并打印出来。然后,在`main`函数里,我们使用`kmalloc`为一个`char *`类型的变量分配内存,接着调用`print_memory_address`打印它的地址。使用完毕后,别忘了通过`kfree`释放内存。