首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-04-20 
【数据结构】栈引起的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疑问 
[解决办法]

引用:
引用:关于第4点,你可以再free一次试试看,出错了说明就已经释放了。。



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

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


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

热点排行