AKN*_*AKN 9 c++ operating-system memory-leaks heap-memory shared-memory
每个进程都可以使用堆内存来存储和共享进程内的数据.每当我们在堆内存中占用一些空间时,我们就有编程规则,我们需要在作业完成后释放它,否则会导致内存泄漏.
int *pIntPtr = new int;
.
.
.
delete pIntPtr;
Run Code Online (Sandbox Code Playgroud)
我的问题:每个进程的堆内存是多少?
如是,
只有当进程处于运行状态时才可能发生内存泄漏.
如果不,
然后它意味着操作系统能够将数据保留在某个内存中.如果是这样,是否有办法通过另一个进程访问此内存.这也可能成为进程间通信的一种方式.
我想回答我的问题是肯定的.请提供宝贵的反馈意见.
Jon*_*pan 16
在几乎每个当前使用的系统上,堆内存都是按进程进行的.在没有受保护内存的旧系统上,堆内存是系统范围的.(简而言之,这就是受保护内存的作用:它使您的堆和堆栈对您的进程保密.)
因此,在任何现代系统的示例代码中,如果进程在delete pIntPtr调用之前终止,pIntPtr仍将被释放(尽管它的析构函数,而不是int有一个,不会被调用.)
请注意,受保护的内存是一个实现细节,而不是 C++或C标准的功能.一个系统可以在进程之间自由共享内存(现代系统只是不这样做,因为这是攻击者将你的屁股交给你的好方法.)
| 归档时间: |
|
| 查看次数: |
6977 次 |
| 最近记录: |