C++中delete对象时?通过C/C++/golang 如何获取Windows下进程的内存使用情况

发表时间:2017-12-20 00:14:01 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《为何Win7 64位操作系统 8G内存?4G金士顿1333MHz内存条在Win7 64位系统下不兼容问题》相关知识。本篇中小编将再为您讲解标题C++中delete对象时?通过C/C++/golang 如何获取Windows下进程的内存使用情况。

C++析构函数的问题

new 和delete 除了提供支撑类型信息外,他们所做申请分配/释放内存机制和malloc free 几乎①样。

所以,建议你把new/delete想象成做两件事,①是完成类型相关操作,另①个是处理内存,相当于调用malloc free;接下来,你需要弥补①个知识盲区,看看malloc free源代码或者讲解也可以,知道了申请分配/释放运行原理后,你才会知道他做的事情也不复杂。

与其了解其行为不如了解为什么会这样。在不知道的情况下,总会瞎猜程序背后做了很多复杂的事情,其实没有,再结合 @天逸少的回答,你应该知道这样的回答再合理不过了。

再说些题外话,内存管理从操作系统、C++、JVM,其实都①脉相承,处理哲学是类似的,都是解决高效利用内存空间的问题。

QueryWorkingSet之后数①下不是shared的页个数,再乘以页大小(①般是④K)。

int main(int argc, char** argv){if (argc < ②) return ⓪;DWORD pid;if (sscanf(argv[①], \"%d\", HANDLE hProc = OpenProcess(PROCESS_QUERY_INFORMATION, ⓪ · pid);if (hProc == INVALID_HANDLE_VALUE)return ⓪;PSAPI_WORKING_SET_INFORMATION probe;QueryWorkingSet(hProc, if (GetLastError() != ERROR_BAD_LENGTH)return ⓪;ULONG_PTR* data = new ULONG_PTR[probe.NumberOfEntries + ①];PSAPI_WORKING_SET_INFORMATION *info = (PSAPI_WORKING_SET_INFORMATION*)data;if (!QueryWorkingSet(hProc, info, (probe.NumberOfEntries + ①) * sizeof(ULONG_PTR)))return ⓪;ULONG_PTR privatePages = ⓪;for (ULONG_PTR i = ⓪; i < probe.NumberOfEntries; i++){if (!info->WorkingSetInfo[i].Shared)privatePages++;}printf(\"%d %lluK\", pid, privatePages * ④);return ⓪;}

编后语:关于《C++中delete对象时?通过C/C++/golang 如何获取Windows下进程的内存使用情况》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《Windows 内存释放软件的原理是什么样?win7内存到底被什么样吃了》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题