下面的程序不会触发断言失败:jemalloc未检测内存损坏
int main(int argc, char **argv)
{
int * n = (int *)malloc(100);
//malloc_stats_print(nullptr, nullptr, "gablh");
free(n);
*n += 1;
std::cerr << *n << std::endl;
for (int i = 0; i != 10; ++i) {
std::cerr << *(n+i) << std::endl;
}
}
当我运行程序 MALLOC_CONF="quarantine:32,abort:true,stats_print:true" ex_stats_pr
我得到:
1515870811
1515870811
1515870810
1515870810
1515870810
1515870810
1515870810
1515870810
1515870810
1515870810
1515870810
是否有办法用jemalloc触发中止失败?
阿弥陀佛,jemalloc有任何检查机会吗?你的程序是免费的,然后试图破坏内存,打印一些内容然后退出,而不需要额外调用jemalloc。例如,隔离选项应该与valgrind一起使用,而不仅仅是普通的运行(valgrind可以做一些检查):http://linux.die.net/man/3/jemalloc“隔离内存在释放之前不会被释放来自隔离,...此功能特别与Valgrind [2]结合使用,可检测访问隔离对象的尝试。“ – osgx