把如何给list赋值清空和赋值null对内存释放的区别

关于ArrayList的空间释放问题...
[问题点数:40分,结帖人csm_qz]
本版专家分:0
结帖率 50%
CSDN今日推荐
本版专家分:32379
2013年1月 Java大版内专家分月排行榜第一
2013年10月 Java大版内专家分月排行榜第二2013年3月 Java大版内专家分月排行榜第二2013年2月 Java大版内专家分月排行榜第二
2013年7月 Java大版内专家分月排行榜第三2013年5月 Java大版内专家分月排行榜第三2013年4月 Java大版内专家分月排行榜第三
本版专家分:0
本版专家分:42
本版专家分:10865
2007年12月 Java大版内专家分月排行榜第二2007年11月 Java大版内专家分月排行榜第二2007年10月 Java大版内专家分月排行榜第二
本版专家分:3420
本版专家分:1181
本版专家分:2362
本版专家分:738
匿名用户不能发表回复!|
其他相关推荐最简单的链表删除第一个节点时释放内存的问题【c语言吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:586,042贴子:
最简单的链表删除第一个节点时释放内存的问题收藏
快试试吧,可以对自己使用挽尊卡咯~◆◆
struct&p&{char[20];struct&*};struct&p&*head=(p*)malloc(sizeof(struct&p));最简单的那种单链链表&如果要删除第一个节点并释放他的内存的话该怎么做?书上的我感觉有错误&书上是先用free(head)施放了用malloc分配的内存然后head=head-&next把头指针指向第二个节点地址。&&&&&&&&&&&&&&&这是书上的方法,我不明白&已经释放掉的第一个节点&还能用head-&next这样的方式把头指针指向第2个节点吗?
struct p *tmp=head=head-&free(tmp);tmp=NULL;
楼上正解。但是书上的方法~~ 运气好的话也能实现。free(tmp)只是告诉系统这块内存没人要了,以后可以用,但是并不会真的去销毁里面的内容。所以,当你先free他,然后再去调用里面的内容,如果这中间没有发生内存分配,或者发生了内存分配恰好没有使用这块内存的时候,其实还是可以成功的。但是这种写法是不规范,也是危险地(因为他引用了一块状态不定的内存——天晓得它里面是什么),所以真正编程的时候,还要照着二楼的方法,规范的来写
快试试吧,可以对自己使用挽尊卡咯~◆◆
谢谢LS两位
我明白了。 。。
最规范的话还要上锁,防止在多线程下出现同步的问题
快试试吧,可以对自己使用挽尊卡咯~◆◆
竟然被加精品了
。。早知道 我就 用 ID提问了 。 。。悲剧啊
人生第一个 精品。 。。虽然。。这个精品和我没啥关系 。 。。
回复:5楼至于吗... 还上锁...
回复:7楼写过并行程序的都知道同步的重要性
恩,同步是很重要的,这两天我也在考虑是不是要给自己的写的小东西加上这个,,, 不过,我想,,delphi下,非多线程程序,对access数据库的操作,纯事件触发的程序,,操作系统应该会自己给同步的吧,,,于是我决定不加上自己的锁了,,,
别用&access&用&sqlite&吧sqlite&的&transaction&是原子操作的
c语言,博为峰IT培训免费试听,0元入学,现在更有多重优惠,仅限今天!博为峰,真正的为年轻人服务的企业,14年间培训15万余名it工程师,成绩斐然!
都是界于牛A和牛C之间的人
快试试吧,可以对自己使用挽尊卡咯~◆◆
//带有头结点的情况#include&stdio.h&#include&stdlib.h&#include&conio.h&typedef struct st&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&& struct st *&&&&&&&&&&&&&&&& }USERS;USERS * creat_list(){&&&& USERS *q,*p,*s;&&&&&&&& s=(USERS *)malloc( sizeof(USERS) );//创建头结点 &&&& q=p=s;&&&& while( scanf("%d",&n) )&&&& {&&&&&&&& s=(USERS *)malloc( sizeof(USERS) );&&&&&&&& s-&data=n;&&&&&&&& p-&next=s;&&&&&&&& p=s;&&&&& }&&&&& p-&next='\0';&&&&&}void delete_node(USERS *sp){&&&&& USERS *tmp,*s;&&&&& tmp=s=sp-&&&&&& sp-&next=s-&&&& //把第二个结点接在头结点之后&&&&& free(tmp);&&& //释放第一个结点所占的内存空间&&&&& tmp=NULL;}void out_list(USERS *sp){&&&&& USERS *p;&&&&& p=sp-&&&&&& while( p )&&&&& {&&&&&&&&& printf("%3d",p-&data);&&&&&&&&& p=p-&&&&&&& }&&&&&& printf("\n");}&&&&&&&&&&&int main(){&&&&& USERS *&&&&& head=creat_list();&&&&& out_list(head);&&&&& delete_node(head);&&&&& out_list(head);&&&&& getch();&&&&& return 0;}&&&&&
_List_Hstruct Ntypedef struct Node * PtrToNtypedef PtrToNode Ltypedef PtrToNode PList MakeEmpty(List L);int IsEmpty(List L);int IsLast(Position P, List L);Position Find(int X, List L);void Delete(int X, List L);Position FinPrevious(int X, List L);void Insert(int X, List L, Position P);void DeleteList(List L);Position Header(List L);Position First(List L);Position Advance(Position P);int Retrieve(Position P);#endifstruct Node{&&
1 #ifndef&& _List_H 2
3 struct N 4 typedef struct Node * PtrToN 5
typedef PtrToNode L 6 typedef PtrToNode
List MakeEmpty(List L); 9 int IsEmpty(List L);10 int IsLast(Position P, List L);11
Position Find(int X, List L);12 void Delete(int X, List L);13 Position
FinPrevious(int X, List L);14
void Insert(int X,
List L, Position P);15 void DeleteList(List L);16
Position Header(List L);17 Position
First(List L);18 Position Advance(Position
P);19 int Retrieve(Position P);20
21 #endif22 23 struct Node24 {25 &&&& int&&&&&&&&
&&&& Position&&&& N27 }
1 #include
&stdio.h& 2
#include "list.h" 3
4 int IsEmpty(List L) 5 { 6 &&&& return L-&Next == NULL; 7 } 8
9 int IsLast(Position P, List L)10
{11 &&&& return P-&Next == NULL;12 }13 14 Position Find(int X, List L)15 {16 &&&& Position P;17
18 &&&& P = L-&N19 &&&& while (P != NULL && P-&Element != X)20 &&&& {21 &&&&&&&& P =
P-&N22 &&&& }23
24 &&&& return P;25 }26 27 void Delete(int X, List
&&&& Position P, TmpC30 31 &&&& P = FindPrevious(X, L);32
33 &&&& if (!IsLast(P, L))34
&&&& {35 &&&&&&&& TmpCell =
P-&N36 &&&&&&&& P-&Next =
TmpCell-&N37
&&&&&&&& free(TmpCell);38 &&&& }39 40 &&&&41 }42 43 Position
FindPrevious(int X, List L)44
{45 &&&& Position P;46 47 &&&& P = L;48 &&&& while (P-&Next !=
NULL && P-&Next-&Element != X)49 &&&& {50 &&&&&&&& P =
P-&N51 &&&& }52
53 &&&& return P;54 }55 56 void Insert(int X, List L,
Position P)57 {58
&&&& Position TmpC59 60 &&&& TmpCell = malloc(sizeof(struct Node));61 62 &&&& if (TmpCell == NULl)63
&&&& {64 &&&&&&&& fprintf(stderr, "Out of
space!!!");65 &&&&&&&& exit(1);66 &&&& }67 68
&&&& TmpCell-&Element = X;69
&&&& TmpCell-&Next = P-&N70
&&&& P-&Next = TmpC71 72 &&&&73 }74 75 void DeleteList(List
&&&& Position P, T78 79 &&&& p = L-&N80
&&&& L-&Next = NULL;81 &&&& while (P != NULL)82 &&&& {83 &&&&&&&& Tmp = P-&N84
&&&&&&&& free(P);85 &&&&&&&& P =
T86 &&&& }87
才写的一个很简单的 链表
楼主可以看看! 呵呵 我很菜的
请问楼上的:*tmp=head 应该是地址,能直接赋给*tmp吗??应该是tmp= 吧!!!
书上是正确的、、、、、、
帮帮我,程序太长我就不贴上来了,程序是运行一次出一个结果的。但是要的数据太多。大神让程序运行50次,显示50次结果,并求出这50个数的最大值最小值和平均值。帮我写写吧,告诉我你写的要加在哪里就可以了
登录百度帐号将一个list清空和赋值null到底有什么区别
[问题点数:100分,结帖人jobsoo]
本版专家分:0
结帖率 100%
CSDN今日推荐
本版专家分:0
本版专家分:0
匿名用户不能发表回复!|
其他相关推荐调用list的clear方法和new一个新的list相比,谁的性能更好 - ITeye问答
List list = new ArrayList();
list里有若干元素
我现在想拿到一个空的list,是用list.clear()好,还是直接 list = new ArrayList();好。场景是在for循环里。
PS. clear的实现其实也是遍历list内数组将各个元素赋值null,让gc去回收每个元素。
采纳的答案
尽量不要去重复创建对象在循环里,因为创建一个list需要分配内存并且需要分配一个默认大小集合这些都需要很大的开销,而清除与它比起来差别还是挺大的,你也可以自己测试下
clear比较好。不然堆上面都是这些类了。
从效率上来说差别不大,一般不用考虑。这两种方法最大的差别是,clear()后当前的变量和所有引用到这个list的变量都指向同一个空的list,而如果你new了一个list后再赋值,则当前的变量变为一个空list,而其他以前引用到初始list的则不受影响,还是之前存有数据的list。
已解决问题
未解决问题这个人很懒,什么话也不想说。
sql左外连接和右外连接的区别
两个表:A(id,name)数据:(1,张三)(2,李四)(3,王五)B(id,name)数据:(1,学生)(2,老师)(4,校长)左连接结果:select A.*,B.* from A left join B on A.id=B.1 张三 1 学生2 李四 2 老师3 王五 NULL NULL右链接结果:select A.*,B.* from A right join B on A.id=B.1 张三 1 学生2 李四 2 老师NULL NULL 4 校长****************补充:下面这种情况就会用到外连接比如有两个表一个是用户表,一个是交易记录表,如果我要查询每个用户的交易记录就要用到左外外连接,因为不是每个用户都有交易记录。用到左外连接后,有交易记录的信息就会显示,没有的就显示NULL,就像上面我举得例子一样。如果不用外连接的话,比如【王五】没有交易记录的话,那么用户表里的【王五】的信息就不会显示,就失去了查询所有用户交易记录的意义了。****************看一下结果就能明白左右连接的区别了
原文网址https://zhidao.baidu.com/question/.html 侵删
没有更多推荐了,}

我要回帖

更多关于 js list赋值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信