关于free()函数 realloc()函数的问题 请高手指教
例如:
char str[]="abcdef";
char *chars=str;
free(chars);
再如:
char *p;
p=(char*)malloc(50*sizeof(char));
.......
free(p);
这里的free()函数是释放了整个数组占用的空间还是只释放了第一个元素占用的空间?怎样把指针所指向的一整块空间通过free()函数释放?还有如果p指向的是一个链表,free(p)是只释放第一个结点的空间还是整个链表占用的空间都可以释放?能够说明一下free()函数原理的更好
还有realloc()函数的问题
例如:
char *p,*q;
p=(char*)malloc(50*sizeof(char));
......
q=(char*)realloc(p,100*sizeof(char));
realloc()函数是怎样实现的?
是
在原有空间(即p指向的空间)的基础上扩充空间后将原空间的元素复制到新开辟的空间(q指向的空间)里,结束后q指向的地址实际上还是p指向的地址。
还是
另外开辟一块儿指定大小的空间,将原有空间中的元素复制到新空间里,然后将原来的空间覆盖。
或者是通过其他方式实现? p和q指向的内存首地址是不是一个地方啊?请高手指教,越详细越好。