相关疑难解决方法(0)

如何判断堆栈或堆栈是否已分配?

我想知道是否有办法弄清楚变量是堆栈还是堆分配.

考虑一下:

struct SomeStruct;

fn main() {
    let some_thing = Box::new(SomeStruct);
    println!("{:p}", some_thing);
    foo(&*some_thing);
}

fn foo (bar: &SomeStruct) {
    println!("{:p}", bar);
}
Run Code Online (Sandbox Code Playgroud)

版画

0x1
0x1
Run Code Online (Sandbox Code Playgroud)

然后

struct SomeStruct;

fn main() {
    let some_thing = &SomeStruct;
    println!("{:p}", some_thing);
    foo(some_thing);
}

fn foo (bar: &SomeStruct) {
    println!("{:p}", bar);
}
Run Code Online (Sandbox Code Playgroud)

版画

0x10694dcc0
0x10694dcc0
Run Code Online (Sandbox Code Playgroud)

我可以看到堆分配版本的内存地址要短得多,但我不知道这是否是一种可靠的方法来区分它.我想知道是否有类似的东西std::foo::is_heap_allocated()

heap stack rust

5
推荐指数
1
解决办法
710
查看次数

标签 统计

heap ×1

rust ×1

stack ×1