|
发表于 2005-5-29 13:36:41
|
显示全部楼层
// if(T->ch)
// free(T->ch);
1.
T->ch应该是指针吧,开始时T->ch可能是一个随机值,指向内存中所有可能的位置,如果这个地址是其它程序的内存段,你就没有权限,保护错,所以你不可以用他是否是0来判断他是否是有数据,其实你两行代码是完全没有必要的,因为只要你给它赋值,那么那个内存块(就算真的有数据)就会被丢弃,你又何必多此一举去释放它呢
2.
T->ch=(char *)malloc(S.length*sizeof(char));
主要在这里,因为
T->ch它有向系统申请了S.length个字符长度
然后再通过
for(i=0;i<S.length;i++)
T->ch=S.ch;
复制
然后把长度值也复制过来
T->length=S.length |
|