优化valgrind,修改最大段数量,增加打印程序运行指定时间段内分配但未释放的内存信息.
1.将VG_N_SEGMENTS值由5000修改为500000,支持测试大量的内存分配时valgrind运行错误
2.增加3个全局参数,用于控制内存分配统计信息输出:
#当valgrind中一次分配的内存大于该值时,则打印分配量及程序代码地址,该值初始化为Ulong(-1)
global_start_record_size

#全局监测标记,用于标识内存块信息,新分配的内块的print_flag等于该值,可以根据内存块的print_flag信息,表示内存的块的分配时间段
global_start_detect_flag

#全局打印标记,当设置该标记后,在下次程序分配内存时,会打印出print_flag值>=当前global_start_detect_flag的所有已经分配,但没释放的内存块统计信息,并将该值置0
global_start_print_flag

3.linux下可以通过以下方法设置这三个值
#打印所有大于1024byte的malloc操作及free操作.
gdb -p $pid -ex "set global_start_record_size=1024" -batch

#通过下面2个指令,可以打印出指定时间段内,已经分配,但没有释放的内存信息.
gdb -p $pid -ex "set global_start_print_flag=1" -batch
gdb -p $pid -ex "set global_start_detect_flag=15" -batch