gpt4 book ai didi

c++ - 这会超出范围并且无法正常运行吗?

转载 作者:搜寻专家 更新时间:2023-10-31 00:49:45 25 4
gpt4 key购买 nike

我在我的代码中声明了一个结构,然后尝试将它插入到我编写的数据结构中。但是,我担心因为我在函数内部声明了结构,一旦函数结束,数据结构将指向垃圾。有人可以帮忙吗?

代码如下:

 void Class::function()
{
// do some stuff
node newNode;
newNode.memAddr = tempNode.memAddr+totalSize;
newNode.size = tempNode.size-totalSize;
lists[newNode.size>=512?64:(newNode.size>>3)].insert(&newNode);
}

编辑:我实际上正在尝试重写 malloc,因此调用 malloc() 或 new 在这里不起作用。有什么方法可以将此代码移到插入方法中,然后使其以不会超出插入范围的方式工作吗?

最佳答案

函数返回后会超出范围,是的。那是无效的。你想在堆上分配它。

编辑:当然,除非你在插入时复制你指向的内存。

关于c++ - 这会超出范围并且无法正常运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/775367/

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