【数据结构】栈唤起的malloc和free疑问

【数据结构】栈引起的malloc和free疑问
最近开始学数据结构,感觉基础好差啊……呵,扯远了

学到栈,发现些疑问,求解
1.栈用malloc申请的空间不用释放么?怎么看到了例子都没free?
2. 找到篇文章大致的说了下malloc和free(http://bbs.bccn.net/thread-82212-1-1.html)说malloc分配的时候有单独记录信息的,(那信息存在哪里?)
那么我这样:
//code…
Stack *a;
a=(Stack *)malloc(sizeof(Stack)*n);
//code…
最后我在free(a); 这样能不能完全释放内存了?还是要for(i=0,i<=n,i++)free(a+i);?
3.内存到底释放了没有怎么看出来?内存没刷新前内容都没变哦
基本上就是这些了,问题有点小多哈,本来还有一些的,打打字就忘记了…【数据结构】栈唤起的malloc和free疑问
刚注册不久,不太懂规则,但是100分也算有诚意了吧,大神们,Come on!【数据结构】栈唤起的malloc和free疑问
数据结构 malloc free c

------解决方案--------------------
1. 数据结构的最终目的是解决问题。所以学数据结构(包括学习算法)时用malloc申请来的空间,到最后有没有释          放,与学习无关,属于语言上的细节。当从数据结构到程序的时候,就要注意这些小细节,比如说malloc来的内存就要free之类的。

2.malloc和free的信息是记录在OS里面的,一般访问不到。OS一般提供了操作堆内存分配去配的API,让malloc库函数调用。到时候学习了OS原理就了解了

3.一次malloc,一次free。否则会出现奔溃。

4.话说一块malloc来的内存,是否free掉还真看不出来。那块内存在重用之前,原值还是存在的。这一切都是程序员的责任。
------解决方案--------------------
关于第4点,你可以再free一次试试看,出错了说明就已经释放了。。
【数据结构】栈唤起的malloc和free疑问


玩笑玩笑,那时已经回不去了,你的程序要挂了【数据结构】栈唤起的malloc和free疑问 
------解决方案--------------------
引用:
引用:关于第4点,你可以再free一次试试看,出错了说明就已经释放了。。



玩笑玩笑,那时已经回不去了,你的程序要挂了

也就是说只用free一次malloc申请返回的地址就可以全释放了?
free过一次再free不是相当于free空指针么,那不就是什么都不做么,那么怎么会出错呢?
出错要怎么看?free没有返回值……


free()不会自动将你的指针赋值为NULL,这个指针原来指向哪儿,free()之后还是指向哪儿。不过OS标记这块内存已经被系统回收了,下次有人申请的时候可以分配出去。free()之后将指针赋值为NULL是个好习惯,建议这么做。