由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - c语言abort时怎么清理堆空间?
相关主题
C++的exception大家常用吗?《新C++标准:C++0x 概述》英文文字版[PDF]
c++ define 一问C++中parse string的问题
[合集] 谁能知道这是为什么?C++问题输入参数的检查应该归caller还是callee?
Help - C++ Debug Assertion Failed请教(C++)
问一个奇怪的问题。C++11里如何限制模板只针对特定类型定义?
一个C#似疑模板问题用来用去还是Rust是最好的语言,代表今后的方向
问行C++代码使用assert应遵循什么原则?
基于macro的meta programming真难懂perl:里有象 c assert 的东西吗?
相关话题的讨论汇总
话题: 和尚话题: 师父话题: abort话题: 剃头话题: 内存
进入Programming版参与讨论
1 (共1页)
S***P
发帖数: 194
1
例如堆里面现在有整型a,然后有一个assert失败,好像是直接abort了。这时候堆空间
里面的a是不是会造成内存泄露?
如果会造成内存泄露,怎么能防止这种情况发生?
谢谢了
y*******g
发帖数: 6599
2
abort了不是程序都完了吗?

【在 S***P 的大作中提到】
: 例如堆里面现在有整型a,然后有一个assert失败,好像是直接abort了。这时候堆空间
: 里面的a是不是会造成内存泄露?
: 如果会造成内存泄露,怎么能防止这种情况发生?
: 谢谢了

S***P
发帖数: 194
3
程序完了,那堆里面的变量空间是自动被OS收回了,还是就浪费了?

【在 y*******g 的大作中提到】
: abort了不是程序都完了吗?
y*******g
发帖数: 6599
4
有区别吗

【在 S***P 的大作中提到】
: 程序完了,那堆里面的变量空间是自动被OS收回了,还是就浪费了?
X****r
发帖数: 3557
5
堆空间是各程序自有的,程序退出所有自有空间都被操作系统收回,包括所有的堆和栈。

【在 S***P 的大作中提到】
: 程序完了,那堆里面的变量空间是自动被OS收回了,还是就浪费了?
S***P
发帖数: 194
6
那malloc以后,不free,不会造成内存泄露吗?

栈。

【在 X****r 的大作中提到】
: 堆空间是各程序自有的,程序退出所有自有空间都被操作系统收回,包括所有的堆和栈。
l*********s
发帖数: 5409
7
no

【在 S***P 的大作中提到】
: 那malloc以后,不free,不会造成内存泄露吗?
:
: 栈。

S***P
发帖数: 194
8
那我纳闷了,即使这样也不泄漏内存?那要free干啥呀?
#include
#include
int main (int argc, char* argv[])
{
char * buffer;
buffer = (char*) malloc (100000);
if (buffer==NULL) exit (1);
return 0;
}

【在 l*********s 的大作中提到】
: no
X****r
发帖数: 3557
9
泄漏内存是指运行中的程序未能释放已经不用的内存。程序退出当然就无所谓内存泄漏
。现实中很多程序都是运行很久的。作为C/C++程序员记得释放内存是必须的。

【在 S***P 的大作中提到】
: 那我纳闷了,即使这样也不泄漏内存?那要free干啥呀?
: #include
: #include
: int main (int argc, char* argv[])
: {
: char * buffer;
: buffer = (char*) malloc (100000);
: if (buffer==NULL) exit (1);
: return 0;
: }

i***c
发帖数: 26
10
等到这个程序需要跑一年的时候就看出差别了。

【在 S***P 的大作中提到】
: 那我纳闷了,即使这样也不泄漏内存?那要free干啥呀?
: #include
: #include
: int main (int argc, char* argv[])
: {
: char * buffer;
: buffer = (char*) malloc (100000);
: if (buffer==NULL) exit (1);
: return 0;
: }

a****l
发帖数: 8211
11
http://new.060s.com/article/2010/12/24/228253.htm
小和尚的剃头刀
2010-12-24
古时候寺庙里有一位小和尚,在出家当和尚之前就有丢三落四的毛病。进入寺庙之
后,方丈师父和师兄师弟们一直不停地提醒和告诫他,可是他自己却一直不当回事,就
这样他一直也未能改掉丢三落四的毛病。
每天除了诵经念佛、打扫寺院、提水砍柴之外,小和尚也想和师兄一样学一门手艺
,为的是以后有一个好出路。于是方丈师父就安排小和尚学习剃头,因为与其他手艺比
起来,这门手艺不是很难学,况且以后一旦离开寺庙,小和尚还可以用这门手艺来养活
自己。
在学习了一段时间之后,小和尚认为剃头实在是一门简单易学的手艺,所以他就不
再向师父学习。可是师父却告诉他:“剃头不是仅仅学习一些基本方法就能行的,你要
想掌握好这门技艺,就必须每天拿一个冬瓜来练习,直到在冬瓜上能够游刃有余地施展
各种剃头方法,那才会成为一个不错的剃头匠。”
听了师父的话以后,小和尚就天天在冬瓜上练习剃头的基本功。练了一天又一天,
好几个月过去了,小和尚剃冬瓜的水平已经越来越高,师父见了也忍不住高兴起来。可
是师父在一次观察小和尚剃冬瓜时发现一个问题,小和尚练习剃头都是抽空进行的,在
剃头过程中经常有事需要他走开。每当别人叫小和尚走开的时候,他都会把剃头刀别在
冬瓜上面,等办完事回来以后再抽出剃头刀继续练习。
这个问题,实在是把师父吓了一大跳,于是他告诫小和尚以后千万不能这样做了,
小和尚答应了师父。可是等师父下次再观察他的时候,他仍然在离开的时候把剃头刀别
在冬瓜上面;而且据师父的多次观察发现,小和尚每次都是这样。师父一次又一次地提
醒小和尚,可是提醒的次数虽多,小和尚往冬瓜上别刀的习惯却没有任何改变,而且每
次小和尚都对师父说:“不要紧的,这只是习惯而已”。
“只是习惯而已?”师父严肃地对小和尚说,“如果你手底下不是一个冬瓜,而是
一个活生生的人呢?你的这种习惯到时候没准会出人命啊!”
看到师父生气的样子,小和尚安慰道:“没事的,师父,你不要担心,等到真为人
剃头时我就不会这样了。”
眼看着小和尚还俗的时间就到了,临行时师父再三告诫他一定要改掉丢三落四的毛
病。可是小和尚的这一习惯早已养成多年,更何况他自己根本就没有改掉这一习惯的意
识,终于在他第一次给人剃头的时候,出事了———有人叫他递一件东西时,他顺手把
剃头刀别在了客人的头上,好在客人没有出现生命危险,从此他的剃头铺再也没有人光
顾了。
养成好习惯可以受益终生,坏习惯却可能毁掉人的一生,不要以为一个小小的习惯
无关紧要,人们正在和将要面临的许多成就或祸患其实就是由这些看似不起眼的习惯形
成的。

【在 S***P 的大作中提到】
: 那我纳闷了,即使这样也不泄漏内存?那要free干啥呀?
: #include
: #include
: int main (int argc, char* argv[])
: {
: char * buffer;
: buffer = (char*) malloc (100000);
: if (buffer==NULL) exit (1);
: return 0;
: }

S***P
发帖数: 194
12
哦,这样啊,谢谢啦。

【在 X****r 的大作中提到】
: 泄漏内存是指运行中的程序未能释放已经不用的内存。程序退出当然就无所谓内存泄漏
: 。现实中很多程序都是运行很久的。作为C/C++程序员记得释放内存是必须的。

x****u
发帖数: 44466
13
其实现在移动开发中有个趋势是不释放内存而退出,这样可以大大提高效率,节省资源。

【在 i***c 的大作中提到】
: 等到这个程序需要跑一年的时候就看出差别了。
y*******g
发帖数: 6599
14
webkit基本上就这样。

源。

【在 x****u 的大作中提到】
: 其实现在移动开发中有个趋势是不释放内存而退出,这样可以大大提高效率,节省资源。
1 (共1页)
进入Programming版参与讨论
相关主题
perl:里有象 c assert 的东西吗?问一个奇怪的问题。
有人export class from a dll 吗?一个C#似疑模板问题
Debug Assertion Failed问行C++代码
A question about Debugging基于macro的meta programming真难懂
C++的exception大家常用吗?《新C++标准:C++0x 概述》英文文字版[PDF]
c++ define 一问C++中parse string的问题
[合集] 谁能知道这是为什么?C++问题输入参数的检查应该归caller还是callee?
Help - C++ Debug Assertion Failed请教(C++)
相关话题的讨论汇总
话题: 和尚话题: 师父话题: abort话题: 剃头话题: 内存