c++ - 我可以在不使用 new 关键字的情况下以某种方式实现它吗? C++

标签 c++ memory-management new-operator

有没有一种方法可以在不使用 new 的情况下实现它?关键词?

void World::generateChunk(Coordinate coord) {
    if(loadedChunks[coord])
        delete loadedChunks[coord];
    loadedChunks[coord] = new Chunk(coord);
    loadedChunks[coord]->generate();
}

loadedChunks 是一个 std::map<Coordinate, Chunk*> .

最佳答案

是的,通过使用:

std::map<Coordinate, Chunk>

World::generateChunk() 它们会变成:

void World::generateChunk(Coordinate coord)
{
    loadedChunks[coord] = Chunk(coord);
    loadedChunks[coord].generate();
}

请注意这一点的含义。由于现有对象已分配给,因此不再有析构函数调用。并且多态性不再起作用(您将无法在 loadedChunks 中存储 Chunk 子类。)此外,至少 loadedChunks.size() 对象将永远存在;它们不可删除。

Chunk 还必须满足标准容器类的标准,例如可复制构造、可分配等。并确保这些操作正常工作(例如,您需要确定是否需要深拷贝或浅拷贝。)

关于c++ - 我可以在不使用 new 关键字的情况下以某种方式实现它吗? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17930844/

相关文章:

c++ - 第 924 行 : Char 9: runtime error: reference binding to null pointer of type 'int' (STL_vector. h)

c++ - 函数外的 Ublas vector 初始化

c - 如果我使用 mmap 而不是 malloc 分配内存会怎样?

c++ - 全局新运算符重载

javascript - 用 JavaScript 打开一个全新的窗口,而不替换前一个窗口的内容

c++ - 首先从目录中读取较新的文件 - C++

c++ - 对象数组的插入方法c++

iphone - NSMutable 数组 - 分配和保留对象

c - 如何释放对齐指针?

dependency-injection - DI容器,工厂或临时性元素的新容器?