关于malloc和realloc的问题
Rtubo 2002-09-24 09:00:06 int *p;
p=(int *)malloc(3*sizeof(int));
free(p);
问题是在free的时候,对于指针p,free怎么知道应该释放多少位内存?
如果是
int *p,*q;
p=(int *)malloc(3*sizeof(int));
q=p;
free(q);
它还能正确的释放吗?
下面是realloc的问题:
int *p;
p=(int *)malloc(3*sizeof(int));
p[0]=100;
p=(int *)realloc(p,4*sizeof(int));
free(p);
1.realloc是不是重新开辟了4个sizeof(int)的内存,把原来的3个sizeof(int)的内容复制过去?也就是说p[0]在执行了realloc后是否还是100?如果重新开辟的小于原来开辟的,是否只复制前面的一部分数据.
2.执行了realloc后,原来的那3个sizeof(int)是不是会自动被释放掉?
望高手详细回答.不胜感激