社区
Linux/Unix社区
帖子详情
linux有没有测试内存可读写的函数。
kkk2017
2013-09-09 08:13:03
LINUX C语言没有try catch吗?
我有一段代码,可能内存不能读,会出错,没有try catch怎么防止这种错误呢?
WINDOWS上有IsBadReadPtr和IsBadWritePtr函数测试内存的可读可写?LINUX有类式的函数吗?
...全文
425
3
打赏
收藏
linux有没有测试内存可读写的函数。
LINUX C语言没有try catch吗? 我有一段代码,可能内存不能读,会出错,没有try catch怎么防止这种错误呢? WINDOWS上有IsBadReadPtr和IsBadWritePtr函数测试内存的可读可写?LINUX有类式的函数吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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,最终导致整个逻辑错误。
[14本经典Android开发教程]-8-
Linux
内核阅读心得体会
[14本经典Android开发教程] 8
Linux
内核阅读心得体会 读核感悟 2 读核感悟
Linux
内核启动 内核的生成 2 读核感悟
Linux
内核启动 从hello world说起 3 读核感悟
Linux
内核启动 BIOS 5 读核感悟
Linux
内核启动 setup...
Linux
下磁盘文件
读写
之速度
测试
最近由于项目的需求,想要
测试
一下
linux
开发板下的文件
读写
速度,所以我就大小写一个小程序来
测试
一下,这里我用了三种方法分别对文件进行读出来,然后写入到另一个文件中,类似于复制文件操作 二.代码部分 这也就是...
【
Linux
】
Linux
系统调用
函数
(300多个)
一、初级I/O
函数
二、文件管理操作
函数
三、标准I/O
函数
四、格式化输入输出
函数
五、进程控制六、进程间通信
函数
七、信号
函数
八、用户、组
函数
及环境变量
函数
九、错误处理与
内存
分配
函数
十、日志
函数
、动态
函数
与正则...
Linux
磁盘/硬盘测速,dd命令,
测试
顺序
读写
,
测试
4K性能
比如此时
测试
sdb硬盘下sdb1分区的
读写
速度,进入到对应分区的挂载目录,然后执行
测试
命令。if=/dev/zero(产生字符)不产生IO,因此可以用来
测试
纯写速度;bs是每次读或写的大小,即一个块的大小,count是
读写
块的数量...
测试
内存
读取速率
平时CPU读取数据时会从cache或者
内存
中读取数据。如果想单纯从
内存
中读取数据,那么需要把cache关闭。然后从
内存
中顺序读取数组。读取速率bandwidth、数组大小arraysize、读取时间time之间的计算公式如下: ...
Linux/Unix社区
23,110
社区成员
74,506
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章