通过object_is_on_stack检测指针是否在stack上
来源:互联网 发布:野草教学设计软件 编辑:程序博客网 时间:2024/06/04 18:04
我们知道kernel中的stack很小,当别人传递给一个数组,如果这个数组很大的话,就需要检查这个数组是在stack上还是在堆上,kernel还提供了一个函数用于检查某个变量是否在stack上,不限于数组
static inline int object_is_on_stack(void *obj)
{
void *stack = task_stack_page(current);
return (obj >= stack) && (obj < (stack + THREAD_SIZE));
}
这个函数返回1的话,就说明在stack上就要额外留心
而这个函数的实现原理很简单,首先通过task_stack_page拿到这个task的stack,然后检测这个地址是否在stack范围内就可以了
static inline void *task_stack_page(const struct task_struct *task)
{
return task->stack;
}
#define THREAD_SIZE 16384
同时可知每个task有16k的stack
static inline int object_is_on_stack(void *obj)
{
void *stack = task_stack_page(current);
return (obj >= stack) && (obj < (stack + THREAD_SIZE));
}
这个函数返回1的话,就说明在stack上就要额外留心
而这个函数的实现原理很简单,首先通过task_stack_page拿到这个task的stack,然后检测这个地址是否在stack范围内就可以了
static inline void *task_stack_page(const struct task_struct *task)
{
return task->stack;
}
#define THREAD_SIZE 16384
同时可知每个task有16k的stack
阅读全文
0 0
- 通过object_is_on_stack检测指针是否在stack上
- 手机触屏检测,检测是否点击在UGUI上
- Linux下通过进程名检测进程是否在运行
- 关于在Android上检测是否存在网络的问题
- 八种方法检测是否在模拟器上运行
- 检测微信是否已安装在手机上
- ugui与ngui如何检测是否点击在UI上
- 通过define _CRTDBG_MAP_ALLOC宏来检测windows上的code是否有内存泄露
- object_is_on_stack() 函数
- UGUI - 判断是否点击在UI 上 Bug,IsPointerOverGameObject()在移动端检测失败
- 一道题检测是否理解指针
- 检测是否在虚拟机中
- 检测鼠标是否在使用
- 检测windows 32位程序是否运行在64位系统上
- 在win8.1系统上检测Chrome浏览器是否安装并获取版本号和安装路径
- 小胖说事50-----IOS 检测APP是否在手机上安装并且打开APP
- java 检测 Java 是否运行在64bit 的JVM上(未测试)
- 深度学习在 iOS 上的实践 —— 通过 YOLO 在 iOS 上实现实时物体检测
- 抓取远程图片保存到本地
- 数据结构 — 浅析堆排序
- 高级篇(5.4) 01. Explicit Web Proxy 显式web代理 ❀ 飞塔 (Fortinet) 防火墙
- 在Mac上通过Docker部署Oracle Database 12.2版本
- 网络加载图片案例
- 通过object_is_on_stack检测指针是否在stack上
- 机器学习方法:回归(一):线性回归Linear regression
- WebView加载Html的图片文字,或者图文混排
- 仿饿了么加载动画
- 长短连接和长短轮询相关
- JNI对引用数据类型的操作
- 欢迎使用CSDN-markdown编辑器
- 商品展示案例
- hello.c kernel Makefile