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

 

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

原文地址:https://www.cnblogs.com/xuxm2007/p/4815950.html