内存的非法读写操作的检查

valgrind什么的就不说了

AddressSanitizer

除了heap,stack的也可以

https://en.wikipedia.org/wiki/AddressSanitizer#Stack-buffer-overflow

http://developerblog.redhat.com/2014/12/02/address-and-thread-sanitizers-gcc/

tcmalloc的page fence

局限是只能对heap做越界读写的检查

http://www.xuebuyuan.com/1466812.html

  http://gperftools.googlecode.com/files/gperftools-2.0.tar.gz

修改了代码,打开了内存越界检查的文件。修改如下:

sed -i "s/EnvToBool(\"TCMALLOC_PAGE_FENCE\", false)/EnvToBool(\"TCMALLOC_PAGE_FENCE\", true)/g" src/debugallocation.cc
    意思是:
            src/debugallocation.cc: 101
                    DEFINE_bool(malloc_page_fence,
                                EnvToBool("TCMALLOC_PAGE_FENCE", false),
                                "Enables putting of memory allocations at page boundaries "
                                "with a guard page following the allocation (to catch buffer "
                                "overruns right when they happen).");
            将
                EnvToBool("TCMALLOC_PAGE_FENCE", false)
            改成了
                EnvToBool("TCMALLOC_PAGE_FENCE", true)

cd gperftools-2.0 && ./configure --enable-frame-pointers && make

时间: 2024-08-07 18:57:57

内存的非法读写操作的检查的相关文章

VC++ 共享内存读写操作

此解决方案含两个工程文件,一个是写操作工程文件,即把任意字符串写入创建的共享内存里,另外一个读操作工程文件,则是读取共享内存里的数据,从而实现了进程之间的共享内存读写操作. 源码下载

java文件读写操作

Java IO系统里读写文件使用Reader和Writer两个抽象类,Reader中read()和close()方法都是抽象方法.Writer中 write(),flush()和close()方法为抽象方法.子类应该分别实现他们. Java IO已经为我们提供了三个方便的Reader的实现类,FileReader,InputStreamReader和BufferedReader.其中最重要的类是InputStreamReader, 它是字节转换为字符的桥梁.你可以在构造器重指定编码的方式,如果不

oracle读写文件--利用utl_file包对磁盘文件的读写操作

摘要: 用户提出一个需求,即ORACLE中的一个表存储了照片信息,字段类型为BLOB,要求能导出成文件形式. 本想写个C#程序来做,后来想起ORACLE有很多包,功能很好很强大,于是网上参考了些文章完成了. 主要是用了ORACLE的两个包:UTL_FILE和DBMS_LOB. 实现过程: 第一步:以管理员用户登陆设置可操作目录 --CREATE DIRECTORY privilege is granted only to SYS and SYSTEM by default. create or

Java的文件读写操作 <转>

目录: file内存----输入流----程序----输出流----file内存 java中多种方式读文件 判断文件是否存在不存在创建文件 判断文件夹是否存在不存在创建文件夹 java 写文件的三种方法比较 java中的getParentFile Java RandomAccessFile的使用 高效的RandomAccessFile 高效的RandomAccessFile续 file(内存)----输入流---->[程序]----输出流---->file(内存) 当我们读写文本文件的时候,采

linux程序设计——对FIFO进行读写操作(第十三章)

4.对FIFO进行读写操作 使用O_NONBLOCK模式会影响的对FIFO的read和write调用. 对一个空的,阻塞的FIFO(即没有用O_NONBLOCK标志打开)的read调用将等待,直到有数据可以读时才继续执行.与此相反,对一个空的,非阻塞的FIFO的read调用将立刻返回0字节. 对一个完全阻塞的FIFO的write调用将等待,直到数据可以写入时才继续执行.如果非阻塞的FIFO不能接收所有写入的数据,它将按下面的规则执行. 如果请求写入的数据长度小于等于PIPE_BUF字节,调用失败

(六)kernel中文件的读写操作可以使用vfs_read()和vfs_write

需要在Linux kernel--大多是在需要调试的驱动程序--中读写文件数据.在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() filp_close(), vfs_read() vfs_write(),set_fs(),get_fs()等,这些函数在linux/fs.h和asm/uaccess.h头文件中声明.下面介绍主要步骤 1. 打开文件 filp_open()在kernel中可以打开文件,其原形如下: strcut file

linux下文件的读写操作(openreadwrite)

linux下文件的读写操作(openreadwrite) 转 http://www.2cto.com/os/201403/285837.html open(打开文件) 相关函数 read,write,fcntl,close,link,stat,umask,unlink,fopen 表头文件 #include<sys/types.h>#include<sys/stat.h>#include<fcntl.h> 定义函数 int open( const char * path

读写操作(补充)

读写操作(补充) 之前的一篇有关终端读写的内容比较详细:https://blog.51cto.com/steed/2315597 这篇,先补充了两个从终端逐行扫描并处理的示例.然后再补充了有关两个写入操作的内容. bufio包,逐行读取 关于bufio包,使用它可以简便和高效地处理输入和输出.其中一个最有用的特性是称为扫描器(Scanner)的类型,它可以读取输入,以行或者单词为单位断开,这是处理以行为单位输入内容的最简单方式. 先声明一个 bufio.Scanner 类型的变量: input

VPS性能测试:CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试

现在便宜的VPS主机越来越多了,一些美国的VPS主机甚至给出1美元一月的VPS,堪比虚拟主机还要便宜,巨大的价格优势吸引不少人购买和使用,而近些年来国内的主机商也开始意识到便宜的VPS对草根站长的诱惑力,纷纷推出了低价VPS,其中突出的代表就是阿里云. 所谓“一分钱一分货”,把VPS当成虚拟主机来卖的如果不是做慈善事业就是超售严重,买回来的VPS到底值不值这个价钱,我们一般需要对VPS主机进行一番性能测试,涉及的项目主要有CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试等等. 本