c++内存管理方案是怎样的?

来源:百度知道 编辑:UC知道 时间:2024/06/06 09:06:00
c++内存管理方案是怎样的?

c/c++实战之内存管理
关键字:
c++,内存分配,系统

贴文时间 2001-11-11 21:23:47

原作 paul_ni

欢迎大家来到这片大多数程序员都心有余悸的雷区。本世纪伟大的比尔·盖茨曾经失言:

640k ought to be enough for everybody -- bill gates 1981

相信程序员们都经常要编写一些关于内存分配和使用的程序,而且都有过那种生不如死的感觉(当然我是指那种调试程序的感觉了,可能夸张了些!)

常见的内存分配和使用错误

1) 内存的申请和分配并没有成功,但程序员却使用了它。一些新手经常会犯这种错误,他们并不会留意到内存没有分配成功。判断指针的值是否为null可以有效地避免这种错误。

2) 内存的分配已经成功,但是却没有进行初始化就直接使用它了。首先是观念上的问题,很多人都没有在使用指针前要初始化这样的习惯,然而这个习惯却是很重要的,希望大家一定要强迫自己养成。第二就是主观地认为自己申请的内存的缺省值为0,这样想是没有什么道理的,内存分配后的值是不确定的。

3) 上面的两种工作都已经做好了(已经成功申请并初始化完成),但是操作时却越界了。

4) 申请了内存,使用完了却忘记了释放,导致内存泄露。这样的错误可以形容为一个恶性的肿瘤,它不会马上要你的命,但是它会慢慢地吞噬你的系统资源,直到你的程序彻底完蛋。

5) 你很小心地释放了内存,但是却又使用了它。由于程序很复杂或者调用顺序出错,这样可能导致出现上面的错误。

指针---一把伟大的双刃剑

我真的非常佩服发明指针的人,他简直太伟大了。能使用如此简洁地方法将复杂的内存结构描述的如此清楚,这本身就是一种伟大的成就。但是,指针之于程序员如同武器之于士兵,用好了可以威力无比,用不好则害人害己。

我先说说指针和数组的区别。数组名对应着一块内存,它的地