vs如何对堆空间进行管理

//释放空间是只需要执行断链操作,当某个堆空间被释放后,再次申请堆空间时会检查这个被释放的堆空间能够满足的用户要求.
如果能满足,则再次申请的堆空间的地址将会是刚释放过的堆空间地址
typdef struct _CrtMemBlockHeader
{
		struct _CrtMemBlockHeader *pBlockHeaderNext;  //下一块堆空间首地址(指向的是前一次申请的内存信息)
		struct _CrtMemBlockHeader *pBlockHeaderPre;   //上一块堆空间首地址(指向的是后一次申请的内存信息)
		char *szFileName;
		int nLine;
		size_t nDataSize;                             //堆空间数据大小
		int nBlockSize;                               
		long lRequest;                                //堆申请的次数
		unsigned char gap[nNoMansLandSize];           //堆空间数据
}_CrtMemBlockHeader;

  char *p1 = (char*)malloc(10);
0x0141BAD8  ab ab ab ab  ????
0x0141BADC  ab ab ab ab  ????
0x0141BAE0  00 00 00 00  ....
0x0141BAE4  00 00 00 00  ....
0x0141BAE8  b9 c5 9b 15  ???.
0x0141BAEC  15 f5 00 1a  .?..  //下一个堆空间的地址
0x0141BAF0  58 64 41 01  XdA.  //上一个堆空间的地址
0x0141BAF4  00 00 00 00  ....
0x0141BAF8  00 00 00 00  ....
0x0141BAFC  00 00 00 00  ....
0x0141BB00  0a 00 00 00  ....  //堆数据的容量
0x0141BB04  01 00 00 00  ....
0x0141BB08  49 00 00 00  I...  //此空间第几次申请
0x0141BB0C  fd fd fd fd  ????  //越界标志 fdfdfdfd
0x0141BB10  cd cd cd cd  ????  //malloc 首地址

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值