提出问题:
如题,通过malloc开辟的空间,在开辟时会指定空间大小,但是在调用free时,却没有指定空间大小,那free函数时如何确定即将被释放的空间的大小的呢?
分析问题:
既然在调用free(p)函数释放空间的时候不需要输入空间大小的信息,那么很有可能在与指针p关联的内存中存储着空间的大小信息, 果断百度了一把,大家的说法是在即将被释放的首地址p的前面的低地址空间中存储着空间的大小信息。
解决问题:
- 在机器上做个测试,打断点,查看内存
-环境 win32 + vs2017
测试一 :
测试二:
测试三:
测试四:
测试五: