gpt4 book ai didi

c++ - 有没有办法区分对象实例使用的是什么类型的内存?

转载 作者:太空狗 更新时间:2023-10-29 20:04:09 25 4
gpt4 key购买 nike

如果我有这段代码:

#include <assert.h>

class Foo {
public:
bool is_static();
bool is_stack();
bool is_dynamic();
};

Foo a;

int main()
{
Foo b;
Foo* c = new Foo;

assert( a.is_static() && !a.is_stack() && !a.is_dynamic());
assert(!b.is_static() && b.is_stack() && !b.is_dynamic());
assert(!c->is_static() && !c->is_stack() && c->is_dynamic());

delete c;
}

是否可以实现 is_stackis_staticis_dynamic 方法来实现断言?

使用示例:计算 Foo 类型的特定对象在堆栈上使用的内存大小,但不计算静态或动态内存

最佳答案

这不能使用标准 C++ 工具来完成,标准 C++ 工具会竭力确保对象以相同的方式工作,无论它们如何分配。

但是,您可以通过向操作系统询问您的进程内存映射,并找出给定对象属于哪个地址范围来做到这一点。 (确保在执行此操作时使用 uintptr_t 进行算术运算。)

关于c++ - 有没有办法区分对象实例使用的是什么类型的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21928898/

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