社区
Linux/Unix社区
帖子详情
linux有没有测试内存可读写的函数。
kkk2017
2013-09-09 08:13:03
LINUX C语言没有try catch吗?
我有一段代码,可能内存不能读,会出错,没有try catch怎么防止这种错误呢?
WINDOWS上有IsBadReadPtr和IsBadWritePtr函数测试内存的可读可写?LINUX有类式的函数吗?
...全文
442
3
打赏
收藏
linux有没有测试内存可读写的函数。
LINUX C语言没有try catch吗? 我有一段代码,可能内存不能读,会出错,没有try catch怎么防止这种错误呢? WINDOWS上有IsBadReadPtr和IsBadWritePtr函数测试内存的可读可写?LINUX有类式的函数吗?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
juliantec
2013-09-10
打赏
举报
回复
有意思的问题 在linux里面,如果去访问你无权访问的内存地址,你就会收到 SIGSEGV 信号而陷入段错误(默认处理为结束进程的继续执行)。 所以,如果你想侦测内存读写权限问题,那你就可以想办法去catch 这个 信号,做进一步的处理。
juliantec
2013-09-10
打赏
举报
回复
不应该吧,我想有两点可以确定: a,某一线程在访问内存违例时候触发的 SIGSEGV 信号只会被这个线程本身收到, 另外的线程是不会收到的。 b,如果想要让函数isbadptr线程安全,那估计需要给每一个线程都准备一份jmp_buf, 或者将之放在TLS内部。 longjmp 的时候挑自己对应的那个用。
kkk2017
2013-09-10
打赏
举报
回复
用了SIGSEGV信号+setjmp的方法来测试可读写,但总觉得有问题。 #include <setjmp.h> #include <signal.h> jmp_buf jmpbuf; void sigsegv(int sign) { signal(sign,SIG_DFL); longjmp(jmpbuf,1); } bool isbadptr(void*ptr,int size) { int i; signal(SIGSEGV,sigsegv); i=setjmp(jmpbuf); if(i==0) { for(i=0;i<size;i++) { *((char*)ptr+i)=*((char*)ptr+i); } } else if(i==1) { return 0; } return 1; } int main(int argc, char** argv) { int eax; if((eax=isbadptr((void*)1000,100))==0) printf("error ptr eax=0"); return (EXIT_SUCCESS); } 用了SIGSEGV信号+setjmp的方法来测试可读写,但总觉得有问题。各位大侠指教。 比如开了两个线程A,线程B, 线程A里调用isbadptr来测试内存读写,isbadptr里调用signal安装了信号处理SIGSEGV,并且setjmp,并且读写内存。 这时候切换到线程B执行,线程B里出现了读写内存错误,发生了SIGSEGV信号,由于之前线程A里调用isbadptr里调用signal安装了信号处理SIGSEGV。这时候线程B走进sigsegv处理函数,调用longjmp跳转到原来线程A的setjmp,最终导致整个逻辑错误。
查看
内存
使用情况的汇编源代码
3. 错误处理和日志记录:在处理
内存
读写
操作时,可能会有异常处理机制,以及对错误或异常情况进行记录。 最后,"RAMSPY.TXT"通常是文档文件,可能包含汇编代码的注释、项目说明、使用指南,或者包含了
内存
使用分析...
[14本经典Android开发教程]-8-
Linux
内核阅读心得体会
[14本经典Android开发教程] 8
Linux
内核阅读心得体会 读核感悟 2 读核感悟
Linux
内核启动 内核的生成 2 读核感悟
Linux
内核启动 从hello world说起 3 读核感悟
Linux
内核启动 BIOS 5 读核感悟
Linux
内核启动 setup...
Linux
下PCI IO
内存
读写
本文链接自: http://qikee.blogbus.com/logs/37072405.html<br />I/O端口是...
Linux
内核 提供了如下一些访问I/O端口的内联
函数
: unsigned inb(unsigned port); void outb(unsigned
Linux
下磁盘文件
读写
之速度
测试
最近由于项目的需求,想要
测试
一下
linux
开发板下的文件
读写
速度,所以我就大小写一个小程序来
测试
一下,这里我用了三种方法分别对文件进行读出来,然后写入到另一个文件中,类似于复制文件操作 二.代码部分 这也就是...
【
Linux
】
Linux
系统调用
函数
(300多个)
一、初级I/O
函数
二、文件管理操作
函数
三、标准I/O
函数
四、格式化输入输出
函数
五、进程控制六、进程间通信
函数
七、信号
函数
八、用户、组
函数
及环境变量
函数
九、错误处理与
内存
分配
函数
十、日志
函数
、动态
函数
与正则...
Linux/Unix社区
23,217
社区成员
74,540
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章