c语言关于内存释放问题
什么是动态分配的内存呢?例如:char*buf=newchar[100];使用结束时需要释放内存不?咋释放?谢谢希望高手们能给出一个标准的答案,并简单说说原因。谢谢到底是...
什么是 动态分配的内存呢?
例如:char* buf = new char[100];
使用结束时需要释放内存不?咋释放?谢谢
希望高手们能给出一个标准的答案,并简单说说原因。谢谢
到底是free还是delete,我都糊涂了。可否说说原因 展开
例如:char* buf = new char[100];
使用结束时需要释放内存不?咋释放?谢谢
希望高手们能给出一个标准的答案,并简单说说原因。谢谢
到底是free还是delete,我都糊涂了。可否说说原因 展开
7个回答
展开全部
malloc,free是c语言中用法
new,delete是c++中用法
都是成对的,你用了new释放就用delete好了
申请了内存不用了的话一定要释放
否则会有内存泄露,系统内存会越来越少
new,delete是c++中用法
都是成对的,你用了new释放就用delete好了
申请了内存不用了的话一定要释放
否则会有内存泄露,系统内存会越来越少
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是InitStack(s)吧?程序里就没有InitSqlist()。
因为栈内容没有初始化,所以访问那个s->top时就出错了,并不是分配内存的malloc的问题。
把主函数里这两行改一下:
Stack *s; /* 这里没有给s分配内存,这只是一个Stack的指针*/
InitStack(s);
改为:
Stack s; /* 这样就给s分配空间了, s.top现在就可以用了*/
InitStack(&s);
这个问题就好了。
相应地,以后使用栈时注意使用指针就好:
ShowStack(s);
改为
ShowStack(&s);
还有一种做法,就是在:
Stack *s;
InitStack(s);
中间给指针s分配内存,让指针s指向正确的结构:
Stack *s;
s = (Stack*)malloc(sizeof(Stack));
InitStack(s);
因为栈内容没有初始化,所以访问那个s->top时就出错了,并不是分配内存的malloc的问题。
把主函数里这两行改一下:
Stack *s; /* 这里没有给s分配内存,这只是一个Stack的指针*/
InitStack(s);
改为:
Stack s; /* 这样就给s分配空间了, s.top现在就可以用了*/
InitStack(&s);
这个问题就好了。
相应地,以后使用栈时注意使用指针就好:
ShowStack(s);
改为
ShowStack(&s);
还有一种做法,就是在:
Stack *s;
InitStack(s);
中间给指针s分配内存,让指针s指向正确的结构:
Stack *s;
s = (Stack*)malloc(sizeof(Stack));
InitStack(s);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是C++的用法,应该用delete
在C中用malloc开辟内存空间,用free释放。
本题:delete []buf
注意:delete buf是错误的!!!因为delete buf只是删除了开辟的内存空间的第一个地址,后面的都没有释放!
在C中用malloc开辟内存空间,用free释放。
本题:delete []buf
注意:delete buf是错误的!!!因为delete buf只是删除了开辟的内存空间的第一个地址,后面的都没有释放!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
需要释放的,要不内存泄漏
free(buf);
free(buf);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询