gpt4 book ai didi

c++ - 是否可以仅通过在 C++ 中存储分配的指针地址来分析内存?

转载 作者:行者123 更新时间:2023-12-01 14:18:40 26 4
gpt4 key购买 nike

我想创建一个简单的内存分析器。它将存储由运算符 new(或直接从 malloc())返回的与分配的大小相关联的地址——作为某个数据库中的事件。然后我想仅使用传递给运算符 delete(或 free())的地址来跟踪释放。

在 C++ 中,我可以确定传递给运算符 delete(或 free())的指针始终是之前分配的指针,这是真的吗?

我怀疑 C++ 分配器中是否有一些隐藏的指针算法,允许删除向上转换或向下转换的指针而不是原始指针。

最佳答案

Is it true, that in C++ I can be sure that pointer passed to the operator delete (or free()) always will be the one previously allocated?

是的,这是真的。它也可以是一个空指针,在这种情况下,您的函数应该什么也不做。

The behavior of the standard library implementation of this function is undefined unless ptr is a null pointer or is a pointer previously obtained from the standard library implementation of operator new...

由于大多数代码是为operator new/delete 的标准库实现编写的,因此它不会将其他指针传递给operator delete

有人可以编写一个重载operator newoperator delete 的类,但没有这个要求。在这种情况下,它也不会调用您的自定义分配器。

关于c++ - 是否可以仅通过在 C++ 中存储分配的指针地址来分析内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59751644/

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