zoukankan      html  css  js  c++  java
  • 内存的非法读写操作的检查

     

    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

  • 相关阅读:
    TCP拥塞控制机制
    C/S 与 B/S 区别
    ext4文件系统新特性
    关于TCP慢启动和拥塞避免的题
    [信息图表]移动学习 Go Study
    [时间线]Android市场的发展
    学习,只有勤奋是不够的……
    UNIX域套接字实例
    程序员的本质
    淘宝Web服务器Tengine正式开源
  • 原文地址:https://www.cnblogs.com/xuxm2007/p/4815950.html
Copyright © 2011-2022 走看看