C 分配内存并使其在退出后保持在那里

C 分配内存并使其在退出后保持在那里,c,linux-kernel,kernel-module,C,Linux Kernel,Kernel Module,我正在研究一个内核模块。长话短说:我需要分配一些内存,并使其在卸载模块后留在那里。可能吗?怎么做 请记住,我不是在问这是不是个好主意。我有我的理由,这很好。这很容易做到,真的。您所要做的就是在module init函数中动态分配内存,但在exit函数中无法取消分配内存。换句话说,故意造成内存泄漏 不过,在初始化过程中需要小心,以避免多次执行分配(和系统调用表修补)。我强烈建议不要这样做,只在加载模块时保持监视代码处于活动状态。之后保持激活状态意味着您有多个加载问题,这也会让模块的用户感到惊讶。我

我正在研究一个内核模块。长话短说:我需要分配一些内存,并使其在卸载模块后留在那里。可能吗?怎么做


请记住,我不是在问这是不是个好主意。我有我的理由,这很好。

这很容易做到,真的。您所要做的就是在module init函数中动态分配内存,但在exit函数中无法取消分配内存。换句话说,故意造成内存泄漏


不过,在初始化过程中需要小心,以避免多次执行分配(和系统调用表修补)。我强烈建议不要这样做,只在加载模块时保持监视代码处于活动状态。之后保持激活状态意味着您有多个加载问题,这也会让模块的用户感到惊讶。

我不确定它是否需要一些特殊的东西。。。但我的建议是:将该指针设为全局指针,并将其外置到您希望使用该内存的其他文件中?@user9000该内存将被标记为可执行文件,并且它将保存自己的代码,这些代码将从syscall表中调用。分配给分配它的进程的内存将在进程终止后释放。如果您的程序退出,则无法挽救其内存。也许可以使用文件共享数据。@erbdex这对用户空间是正确的,但我说的是内核空间。那条规则在那里也适用吗?我不确定。你确定你不能-1。使用文件。2.使用IPC?哦,我真的没想到它会那么容易:P所以,当进程死亡时清除进程分配的内存的一般规则不适用于内核/内核模块,对吗?正确。内核中没有手持;)