gpt4 book ai didi

c - 如何释放用户空间程序中的结构和函数等组件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:41 27 4
gpt4 key购买 nike

在 linux 内核代码中,我看到了很多时间 __initdata__init 宏来制作这样的函数和静态结构作为初始化时间所需的数据。

内核初始化进程后,它会自行释放此类内存。

那么我们如何在运行 C 程序的用户空间中实现这些东西呢?

看到我在某些程序中有大型静态数据结构,我在启动某些程序后需要它,之后我不需要那 block 内存,那么我该如何释放它呢?

据我所知,静态成员的生命周期是直到程序终止,所以程序如何释放这些东西?

这个东西是否在任何用户空间c程序中使用?

最佳答案

__initinclude/linux/init.h 中的一个宏,它变成__attribute__ ((__section__(".init.text")))

__initdata 变成 __attribute__ ((__section__(".init.data")))

如果你想模拟类似于上面那些宏的行为,那么你应该使用 __attribute__ 关键字以及你希望变量所在的二进制文件的 __section__放置。

你必须知道你的二进制文件是如何组织的,二进制文件中的各个部分。然后引用: https://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html#Variable-Attributes找到你可以做什么来达到你想要的效果。

其他提示:

https://gcc.gnu.org/onlinedocs/gccint/Initialization.html https://unix.stackexchange.com/questions/134418/how-many-sections-can-i-create-in-object-file

应该可以帮助您了解可执行文件中的 section 是做什么的。

关于c - 如何释放用户空间程序中的结构和函数等组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25011063/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com