1.调用free()释放内存后,不能再去访问被释放的内存空间。该段内存被释放后,很有可能该指针仍然指向该内存单元,但这块内存已经不属于原来的应用程序,此时的指针为悬挂指针(可以赋为NULL),有些时候,为安全起见,将再次置该指针为空。
free(pt);
pt = NULL;
2.不能两次释放相同的指针(NULL的除外,无论对NULL指针free()多少次都不会出问题)。也不能用free()来释放非malloc(),calloc()和realloc()函数创建的指针空间。
3.在进行C语言程序开发中,malloc和free是配套使用的,即不需要的内存空间都需要释放回收。
4.在本人学习过程中发现一个问题:
如果使用:int * array = (int *)malloc(10 * sizeof(int));
for (count=0; count<10; count++)
{
*array = count;
array++;
}
然后: free(array);
会报错。但当把指针重置为首地址时,再free(array)-->成功!
这是不是表示,向free()函数传递的参数是不是必须是段内存的首地址?答案:是的!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)