如何在C ++中执行caching操作?

我想在刷新caching后运行我的C ++程序,在运行我的程序之前,我不知道caching中有什么。 在unbuntu上有没有其他的C ++方式,通过它我可以在运行我的程序之前刷新caching。

编辑:刷新caching的动机是…每次我运行我的程序,我不希望我现有的数据结构在caching中有…我的意思是我想要一个冷藏caching..其中所有的访问是从磁盘制作…实现这一目标的一种方式是重新启动计算机…但考虑到我必须运行的实验数量,这对我来说是不可行的。 所以,任何人都可以善意引导我…至于我怎么能做到这一点。

Solutions Collecting From Web of "如何在C ++中执行caching操作?"

您无需从用户模式(非内核模式)程序中清除缓存。 操作系统(Linux,在Ubuntu的情况下)为您的应用程序提供一个新的虚拟地址空间,没有来自其他程序的“剩余的东西”。 不执行特殊的OS系统调用,你的程序甚至不能访问用于其他应用程序的内存。 所以从缓存的角度来看,你的应用程序从一个干净的平板开始,就其而言。 有一些cacheflush()系统调用(语法因操作系统而异),但是除非你对典型的用户模式应用程序做了一些不寻常的事情,否则你可能忘记了缓存是存在的。 它只是在那里加快你的程序,操作系统通过CPU的MMU管理它,你的应用程序不需要管理它。

您可能也听说过“内存泄漏”(内存分配给您的应用程序,您的应用程序忘记释放/删除,一旦您的应用程序忘记了这是“永远丢失”)。 如果你正在编写一个(可能)长时间运行的程序,泄露内存肯定是一个问题。 但泄漏的内存只是泄露它的应用程序的一个问题; 在现代虚拟内存环境中,如果应用程序A泄漏内存,则不会影响应用程序B.当应用程序A退出时,操作系统会清空其虚拟地址空间,任何泄漏的内存在系统回收的时间点更长的时间消耗任何系统资源。 在很多情况下,程序员特别选择不释放/删除内存分配,因为知道当应用程序退出时,操作系统将自动回收所有的内存。 这个策略没有什么问题,只要程序没有在重复的基础上继续这样做,耗尽了虚拟地址空间。