本帖最后由 cnkizy 于 2022-9-14 17:08 编辑
首先我是小菜鸟哈,我的回答可能会让你失望。

我弄了很久没发现有啥问题呢,你发的贴子那个博主说的问题,很明显的问题,hello world! 的长度是12,但字符串后面还有一个\0结尾,strlen的结果是12,但strcpy会把\0也复制过去,带上这玩意,它长度就是13了,然后写到后面的下溢标志里,就有错了。
1.两图中未说明的数据表示什么?
未说明的数据 是指?
2.回收空间的数据块大小好像块中没有指示?(free后,由于p[3],p[4]指向的空间是连续的。所以会直接合并,在堆内存中可以看到)
在我本地vs2022里,没发现有合并的情况,free的大小你也说了,在malloc时不仅仅只分配了空间,还有一个结构上面有类型和大小,数据块大小是0c
分配之前堆内存:
释放内存之后:
中午在看到你这个问题的时候,我想起了最近在看的书,相当不错。
《程序员的自我修养—链接、装载与库》
你看首页
是不是吊足了你的胃口。
可惜的是,书上关于malloc这一块,也就是312页,10.3.4这一节,并未给出明确答案,只是告诉读者,malloc有自己的算法,申请的空间不仅仅是程序员给出的这一点东西。
它提出的是一个很简单的模型
继续探讨下呢