是否
free()删除存储在动态分配的内存中的数据?
不,
free只需释放其参数(指针)所指向的已分配空间。此函数接受指向先前分配的内存块的char指针,并释放它-即,将其添加到可能重新分配的空闲内存块列表中。
释放的内存不会以任何方式清除/擦除。
您不应取消引用释放的(悬空的)指针。标准说:
7.22.3.3免费功能:
[…]否则, 如果参数与内存管理函数先前返回的指针不匹配,或者如果通过调用
freeor
释放了空间realloc,则该行为是undefined。
上面的引用还指出,释放指针两次将调用 未定义的行为 。UB实施后,您可能会得到预期的意外结果。可能有程序崩溃或核心转储。



