c++ - 在 C++ 中动态增长数组

标签 c++ arrays dynamic memory-management malloc

我有一个 CName 对象的指针数组。我有以下构造函数将我的数组初始化为 1。然后,当我添加一个对象时,我将数组增加 1 并添加新对象。它编译得很好,但是当我尝试打印它们时,我只是遇到了段错误。你能看看我做错了什么吗?

//constructor
Names_Book::Names_Book()
{
    grow_factor = 1;
    size = 0;
    cNames = (CName**)malloc(grow_factor * sizeof(CName*));
    cNames[0] = NULL;
}

void Names_Book::addCName(CName* cn)
{
    int oldSize = size;
    int newSize = size + 1;

    CName** newCNames = (CName**)malloc(newSize * sizeof(CName*));

    for(int i=0; i<newSize; i++)
    {
        newCNames[i] = cNames[i];
    }

    for(int i=oldSize; i<newSize; i++)
    {
        newCNames[i] = NULL;


    }
    /* copy current array to old array */
    cNames = newCNames;

    delete(newCNames);

    size++;

}

最佳答案

要在 C++ 中拥有可动态增长的数组,您应该使用std::vector或者至少看看它的实现。

关于c++ - 在 C++ 中动态增长数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3903169/

相关文章:

c++ - "Invalid operands to binary expression (ostream and void)"是什么意思,如何修复?

JavaScript - 将四字符数组转换为整数

JavaScript - 为什么我可以在数组中设置键?

javascript - 将项目动态添加到现有列表

ios - 基于iOS设备的自适应定位

c++ - 用于 std::vector 内存管理的不同乘数

c++ - 给模板参数包起别名

c++ - std::optional<std::reference_wrapper<T>> - 可以吗?

javascript - 如何从数组中检查

javascript - 动态附加数据到表单帖子