编写一个以下列非常基本的方式监视内存使用情况的C或C ++程序,是否可能(我不关心实用性或实用性)?
鉴于声明一个变量而不为其赋值,导致它具有已经在其内存位置的任何值,可以创建一个大数组(数千或数百万个元素)并保留所有未分配的值。然后,为了查看是否有任何这些元素被覆盖,我们只需要重复将它们的当前值与之前的值进行比较。
我非常怀疑这会像我上面提到的一样简单。假设我的怀疑是有根据的,问题在哪里,更重要的是,我们可以通过一些创造性的或深奥的代码来规避它?我想这个问题可归因于声明的,未初始化的元素不允许其他系统进程写入其内存地址。请给我一些指示! (heehee)谢谢。
答案 0 :(得分:1)
让我们说你的程序在C中 创建大型数组仅限于允许可用内存以及操作系统限制您的程度。
因此,假设您创建了一个非常大的数组(未初始化)。 现在,内存被提供给您的进程(您运行的程序),没有其他进程可以访问它! (这是OS的作用,可以避免这些事情,虚拟化的基本要求)。
因为没有其他进程可以访问它的值,一旦分配给你,它就不会被改变。