gpt4 book ai didi

c++ - 禁用 malloc 中的随机性

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:55:10 26 4
gpt4 key购买 nike

我正在运行以下简单的 C 程序:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv){
void *p = malloc(4);
fprintf (stderr, "p==%p\n", p);
return 0;
}

不同的运行给出不同的结果:

p==0x101c010

然后:p==0x1ad9010

然后:p==0xe77010

等等。

我记得,过去 malloc 是完全确定性的。所以可能从某个版本开始,一些随机性被添加到 malloc。我现在在 Ubuntu 上使用 gcc-4.6.3。

有没有办法消除这种随机性?

最佳答案

如果变化是由地址空间布局随机化引起的,那么,根据this page ,你可以禁用它:

echo 0 | sudo tee /proc/sys/kernel/randomize_va_space

这应该只是暂时用于调试目的。

这是一篇关于插入函数的好论文:Intercepting Arbitrary Functions on Windows, UNIX, and Macintosh OS X Platforms by Daniel S. Myers and Adam L. Bazinet .这将允许您用完全受控的实现替换 malloc 行为。

关于c++ - 禁用 malloc 中的随机性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20003431/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com