malloc之后为什么要free()? free到底释放了什么?

通俗的来说,malloc是分配内存
free是释放malloc所分配的内存。
那么free之后,原来malloc的值还在吗?如果free之后我还要调用这里面的值呢?
free释放的是内存而不是指针,举个例子。
假设我用malloc分配了一块内存空间,并改写其中的内容为"100"。那么在我free之后,这块内容还是100,并不会变化,原来指向它的指针也还是指向它。那么free()所释放的内存到底是什么呢?
我们应该知道,在我们malloc这块区域之前,这块内存就有它自己的内容
当我们free()掉了这块内存,虽然看似里面的内容没有变化,可实际上当我们再次调用这个指针去进行操作的时候就会出错。
malloc分配给你这块内存的意思就是这是一块有着固定大小的存储区域,而当你free掉后,这块区域的就是去了自己原来的大小边界(例如原来是4个字节,free之后就不会告诉你这是4个字节)
所以free之后再去对指针操作是危险的,因为你不知道在这块内存周围是否存储了其他重要信息,free之后应该把指针修改为NULL

猜你喜欢

转载自blog.csdn.net/Karthus77/article/details/111625415