,为什么这两句话的输出不一样

求救,为什么这两句话的输出不一样int length(PList plist){int i plist-sizereturn i}void main(){PL

求救,为什么这两句话的输出不一样
int length(PList plist){
  int i = plist->size;
  return i;
}  

  

void main(){
  PList dl = newList();
  printf("%d",dl->size); //这里输出0,预期得到的结果
  printf("%d",length(dl));//这里输出-858993460,比较奇怪 



其中newList()返回一个struct的指针 

  

感觉上那两句话是等效的 


[解决办法]
newList(); 返回的一个临时变量的地址,出现无法预期的结果很正常。
[解决办法]
newNode()
newList()
返回的都是局部变量的地址,函数执行完局部变量就被释放,
你再去读取,就会有问题了.