c++ - 如何强制指针在每次启动时不保持它们的值和顺序?

标签 c++ pointers memory-management heap-memory

序言:假设我有以下 C++ 程序:

int main()
{
    int *p1 = new int;
    int *p2 = new int;
}

事实证明,从启动到启动 p1 和 p2 将具有相同的值并且 p1 < p2。

现在的问题是:我有一个大型程序,在堆上分配了多个内存。事实证明,在相当高的稳定性下,指向已分配内存块的指针在每次启动时都将具有相同的值,因此它们的顺序也将保持不变。但我希望指针不要在每次启动时保持它们的值和顺序。如何在对现有代码进行最少更改的情况下实现此行为?

或许,不改代码就能解决问题,写个附属程序就可以了。我想过启动另一个进程来执行频繁的内存分配/取消分配,但不同的进程不共享地址空间,所以它似乎没有帮助。

最佳答案

在程序启动时,分配一堆指向随机长度 block 的指针,然后以随机顺序删除其中的一些随机部分。

关于c++ - 如何强制指针在每次启动时不保持它们的值和顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32274639/

相关文章:

c - 如何将 "pointer to a pointer"传递给需要 "pointer to array"的函数

c++ - for 循环未运行,试图向后遍历数组元素

linux - 如何更好地配置 linux/CPU 以运行大型软件 (NUMA)

c++ - 打印时为我创建的数组保持不同的输出

c++ - 使用tesseract在图片中的文字周围绘制一个矩形

c++ - 需要一个用于通过 NAT 遍历的 Https 服务的 C++ 库?

ios - 基本编程概念: when to initialize new string versus just creating new variable

c++ - 登录功能,如果第一次尝试密码错误,则不会登录

PHP:生产服务器上的内存使用率非常高,而本地计算机上的内存使用率很低

c# - 如何跳过数组中的前几个元素?