
程序:
定义指针head2
head2 = head -> next
free(head)
head = head2
这样就行了,原来的程序肯定是错误的,head被free以后再去访问的话会出现内存访问错误,在Windows下会引起程序被强制结束。要先保存下一个节点的指针,然后删除头节点。
free(str)释放指针所指向的空间,但str不会自动指向NULL,str的值不会变,他还是指向那块内存,只不过那块内存现在已经不归他使用了。你之所以还能使用strcp(str, "hello"); 向这块内存继续写入东西,那完全是由于你的运气,系统随时有可能将这块空间分配给别的程序,从而导致访问错误。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)