gpt4 book ai didi

c++ - 检查指针是否指向堆上分配的内存

转载 作者:IT老高 更新时间:2023-10-28 22:24:37 24 4
gpt4 key购买 nike

我想知道一个指针是否指向一 block 用 malloc/new 分配的内存。我意识到任意地址的答案是“不,你不能”,但我确实认为可以覆盖 malloc/free 并跟踪分配的内存范围。

您知道提供此特定工具的内存管理库吗?
你对生产代码了解吗?

Valgrind很棒,但它的工具太多(慢),正如 Will 所说,我们不想像这样使用 Valgrind(使软崩溃就足够了)。
Mudflap是一个非常好的解决方案,但专用于 GCC,可悲的是,检查不会简单地返回 bool 值(请参阅下面的答案)。
请注意,检查内存写入是否合法是 security issue .所以追求表现是有动力的。

最佳答案

证明它可能无法有效地完成:

char * p1 = malloc(1);
free( p1 );
char * p2 = malloc(1); // probably allocates same block as first malloc

现在 p1 和 p2 都指向堆上的同一个内存,但只有 p2 是有效的。

关于c++ - 检查指针是否指向堆上分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3065092/

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