gpt4 book ai didi

c++ - 处理分配和堆栈内存

转载 作者:行者123 更新时间:2023-11-28 03:10:30 24 4
gpt4 key购买 nike

我提供了两种将元素添加到我的集合中的方法,一次是每个 const 引用,一次是每个指针。

void push_back(const value_type *val) {
element *elem = new element(val);
//...
}
void push_back(const value_type &val) {
push_back(&val);
}

element 类将值作为指针保存。

class element {
private:
const value_type *value;
public:
element(const value_type *value):
value(value) {
}

~element() {
delete value;
}

显然,当弹出元素或删除集合时,如果元素作为指针添加,则必须释放内存。但是,当元素不是手动分配并通过引用传递时,这会产生错误。

如果元素是在 push_back 时间动态分配的,除了额外存储之外,还有其他选择可以解决这个问题吗?

最佳答案

只需保持一致,并始终存储一个可以删除的指针。

void push_back(const value_type &val) {
push_back(new value_type(val));
}

关于c++ - 处理分配和堆栈内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18623688/

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