【请问】delete释放的内存是否全部还给操作系统了?

HeBanBei 2016-01-21 12:03:52
delete释放的内存是否全部还给操作系统了?

我之前以为是的。但是在运行某个测试程序的时候,发现不是的。

delete之后,有大约百分之十的内存仍然为应用程序所有。(这是通过任务管理器看到的)
有一个条件,就是操作系统是windows server.
如果是win7那么看到的内存好像是都释放掉的。

那么问题来了。如果解释这种现象呢?
...全文
371 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2016-01-23
  • 打赏
  • 举报
回复
现代操作系统中,操作系统,采用虚拟内存,管理应用程序的内存。 每个应用程序有独立的内存空间。 所以,本质上,你的程序的内存分配,跟操作系统关系不大。 虽然,可能会调用API分配内存, 但是,那也是在应用程序自己的内存空间分配的。 跟整个操作系统关系不大。 。。。。。。。。 DOS 实模式中, 分配的是真实存在的物理内存,,,,(不过,DOS很难多进程,并行执行。) 这种类型的操作系统,内存分配确实跟操作系统关系密切。 。。。。。。。。。。。。。。。 PS: 所以,现代操作系统中,你的程序内存使用情况, 其实只是和编译器,以及对应的库。 实现的内存分配代码, 自行定义实现的内存分配代码, 引用的第三方库内存分配代码。 等等有关。 只是,他们使用的真实物理内存, 跟操作系统的内存调度有点关系, 也就仅仅这点关系而已。
qq120848369 2016-01-22
  • 打赏
  • 举报
回复
程序会缓存一些,操作系统自己也会缓存一些。
10km 2016-01-22
  • 打赏
  • 举报
回复
这个不一定啊,与不同的系统实现非常相关的。 比如在使用内存池(tcmalloc,jemalloc等等)管理内存时,你通过new申请的内存可能都不需要经过操作系统,delete释放的时候,也不一定归还给操作系统。
paschen 版主 2016-01-21
  • 打赏
  • 举报
回复
不一定会还给系统,可能留作下次分配用
  • 打赏
  • 举报
回复
一般crt会缓存起来以便下次使用。 google 内存池
ztenv 版主 2016-01-21
  • 打赏
  • 举报
回复
这个和语言的运行时库有关系,一般的实现是小块内存不归还系统,大块的可能会归还给系统

64,635

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧