因为直接声明的方法只针对于存储一个变量供你使用。如果你这样声明struct xxxx a,b;可以何证你有两个不同的空间来存储a,b.a,b 的地址也是不同。但如果你在一个for语句中循坏声明struct xxx a;那么编译器认为一轮循环中声明的变量,在下一轮都不要了。也就是说到下一轮,上一轮中声明的变量己经失效了。你把一个失效的空间地址挂在链表上是不对。另外,由于那段空间己经不要,而马上下一轮又要声明一个同样大小的空间。系统很可能把上一轮不要拿给你,也就是说可能每一轮获得的都是相同的那段空间。而malloc方式不同。malloc得到的空间在调用release函数释放之前一直是有效的,也就是说第二次malloc时,只要第一次molloc获得空间没有释放,就不可能得到这段相同的空间。 查看原帖>>