ptmalloc
来源:互联网 发布:酷狗直播mac版 编辑:程序博客网 时间:2024/05/29 19:20
ptmalloc - 如何让其崩溃
我的上一篇文章写的是malloc的最终章,那么你是不是猜下一篇就是写free,我也是这样想的,然而。。。并不是,free的代码我大概扫了一下,实在是名不符其实。真令我失望的free,干脆下次再写把。这次我写些可以玩崩malloc的代码。
sbrk
#include <stdio.h>#include <stdlib.h>#include <stdint.h>#include <malloc.h>#include <unistd.h>#include <errno.h>int main(void){ void *first = malloc(32); void *second = malloc(10240); malloc_stats(); if (sbrk(-10240) == NULL) { perror("sbrk"); return -1; } void *third = malloc(131040); malloc_stats(); free(first); free(second); free(third); return 0;}
效果
Segment fault
原因
malloc申请内存是通过sbrk和mmap,sbrk是通过增长program break,那么,如果你sbrk(-size),就等于缩减program break,malloc访问到已经释放的段,肯定会挂的。
你可能在想,那我sbrk(size),不缩减行么,可以倒是可以,malloc里面会处理sbrk后断开的情况。
建议
malloc和sbrk尽量不要同时使用。
(以后继续补充)
阅读全文
0 0
- ptmalloc
- ptmalloc
- ptmalloc
- ptmalloc
- ptmalloc
- ptmalloc
- ptmalloc
- ptmalloc
- ptmalloc
- ptmalloc
- ptmalloc
- ptmalloc
- PTmalloc hacking
- ptmalloc代码浅析1
- ptmalloc代码浅析3
- ptmalloc分配器的分析
- ptmalloc源码阅读-malloc_chunk
- ptmalloc的分配顺序
- 自动驾驶汽车 实现实时交通信号灯检测和分类
- 你真的知道怎么创建一个长度为n的有序数组吗?
- eclipse 上传代码至git
- 《C++ Primer》读书笔记第十四章-1-重载IO、算术、关系等运算符
- 二叉树的前序中序后序的递归和非递归遍历
- ptmalloc
- javaweb 分页
- Codeforces 903G Yet Another Maxflow Problem 线段树+网络流
- 数据结构实验之排序二:交换排序
- JDK-9的安装与环境变量配置
- 人工智能之自动驾驶系列(一):概要
- LeetCode-21-Merge Two Sorted Lists(C语言实现)
- 串与模式匹配
- 串与模式匹配