Kernel 没有堆分配的内存(内核地址)

Kernel 没有堆分配的内存(内核地址),kernel,malloc,heap-memory,object-address,Kernel,Malloc,Heap Memory,Object Address,当我在内核中找到地址时,我有一个问题。我在内核中插入了一个hello模块,在这个模块中,我使用了 目前,我可以使用kmalloc通过virt\u to\u phys实现地址 char *mystring = kmalloc(19, GFP_KERNEL); strcpy(mystring, "this is my address"); printk("<1>The address of mystring is %p", virt_to_phys(mystring)); char*

当我在内核中找到地址时,我有一个问题。我在内核中插入了一个hello模块,在这个模块中,我使用了

目前,我可以使用
kmalloc
通过
virt\u to\u phys
实现地址

char *mystring = kmalloc(19, GFP_KERNEL);
strcpy(mystring, "this is my address"); 
printk("<1>The address of mystring is %p", virt_to_phys(mystring));
char*mystring=kmalloc(19,GFP_内核);
strcpy(mystring,“这是我的地址”);
printk(“mystring的地址是%p”,virt_to_phys(mystring));
但是我想知道如何找到
char mystring[]=“这是我的地址”。这不是堆分配的内存,对吗?如何通过一些函数找到它


PS:我使用了一个工具来转储整个内存、物理地址。

堆栈地址仍然是虚拟内存地址。内核线程堆栈实际上与任何其他内存没有任何区别,它们也是从“堆”中分配的(如果你可以这样称呼它的话)。好的,但是我不能使用
virt\u to\u phys
来查找mystring的地址,打印的地址是不匹配的。如果你有
char str[]=“some string”
在函数中,函数将分配堆栈内存来保存字符串,然后通常从数据段复制字符串。如果您正在拍摄内存映像,您可能正在检测数据段中字符串的副本,而不是堆栈上的副本,但您正在查找堆栈副本的物理地址。