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

标签 c++

我提供了两种将元素添加到我的集合中的方法,一次是每个 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/

相关文章:

c++ - std::remove_extent 有什么用?

c++ - c++中的替换密码

c++ - 将虚拟方法作为接收迭代器的模板

c++ - 原生 C++ 中的类 C# 属性?

c++ - 为什么 In-place QuickSort 比 C++ 中的普通版本慢?

c# - 使用 CORBA 或 ICE 的计算机科学项目的想法

c++ - 以二进制读取文件并以十六进制输出 std::cin 到 std::cout

c++ - Doxygen解析&字符的ASCII字符

c++ - 使用 MSVC 2015 构建 boost 1.55 时指定工具集版本

c++ - 使用 dlsym 导入的函数中的参数位置错误