关于程序中的内存管理的问题

来源:百度知道 编辑:UC知道 时间:2024/06/01 03:36:33
比如我编了一个程序
#include<iostream.h>
void main()
{
int a = 5;
int *p = new int[4];
}
这个里面的变量的内存分配和释放是谁管理的,如何管理的?还有就是这个程序里的a和p对应的内存区域,可不可能被其他程序访问到,或被其他程序修改,如果另一个程序中有野指针的话,这个指针可不可能指向这个a或p的内存区域?还有就是已分配给一个程序的内存空间会不会被另一个程序使用,如果不能被使用的话,是如何做到的

这个问题很复杂 我很想帮你 可是我能力有显 啊哦...

加油~! 中国缺少你这样的人才

高质量C++/C编程指南 -- 第7章 内存管理 (2)

http://fanqiang.chinaunix.net/program/c++/2002-07-22/2352.shtml

初学者该如何熟悉 Linux 内存管理
http://fanqiang.chinaunix.net/system/linux/2007-02-07/5045.shtml
1.内存泄漏的定义

一般常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的、大小任意的(内存块的大小可以在程序运行期决定)、使用完后必须显示释放的内存。应用程序一般使用malloc、realloc、new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块。否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。

2.内存泄露的危害

从用户使用程序的角度来看,内存泄漏本身不会产生什么危害。作为一般的用户,根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积,这会最终消耗尽系统所有的内存。从这个角度来说,一次性内存泄漏并没有什么危害,因为它不会堆积。而隐式内存泄漏危害性则非常大,因为较之于常发性和偶发性内存泄漏它更难被检测到。存在内存泄漏问题的程序除了会占用更多的内存外,还会使程序的性能急剧下降。对于服务器而言,如果出现这种情况,即使系统不崩溃,也会严重影响使用。

3.内存泄露的检测和回收