4

即使在程序终止后,我也希望有一个变量持续存在。换句话说,即使在应用程序退出主函数后,我也希望变量保留在内存中。因此,如果我的应用程序再次启动,它可以直接从内存中访问该变量。这甚至可能吗?动态分配,例如array=new int[size],会成功吗?

4

3 回答 3

3

这是不可能的。您必须将数据存储在文件或系统首选项中,以便在下次启动时访问它

于 2012-07-27T13:45:58.220 回答
3

不,所有内存都由进程终止时的操作系统回收。你必须将你想要的东西保存到一个文件中。

于 2012-07-27T13:45:18.623 回答
2

免责声明: 将值存储到文件或使用某些框架功能(如QSettings)应该优于以下方法。

如果您真的希望您的变量保留在内存中,并且您可能会冒险在重新启动时丢失这些值,那么请向操作系统请求共享内存

如果您有 POSIX 兼容平台,如 Linux 或 Windows,请使用POSIX 函数。引用手册:

POSIX 共享内存对象具有内核持久性:共享内存对象将一直存在,直到系统关闭,或者直到所有进程都取消映射该对象并使用shm_unlink.

请注意,这会引入一种内存泄漏:即使在应用程序终止后,您的变量也会消耗内存。

于 2012-07-27T14:20:16.773 回答