gpt4 book ai didi

c++ - 有没有办法从特定的内存位置分配内存?

转载 作者:行者123 更新时间:2023-11-30 03:59:57 25 4
gpt4 key购买 nike

让我用一个例子来解释一下:想象一下我们想要调整之前动态分配的对象数组的大小......所以我们有这样的解决方案:
创建一个具有新大小的新数组并尝试将旧数组复制到这个数组并尝试释放旧数组......

但我想要的是检查数组之后的内存是否有可用空间,如果它存在,则为我的数组分配内存,而不是防止内存开销!另一方面,如果我们没有足够的内存用于我们的新数组和旧数组同时存在,我们不能调整它的大小!
有没有办法从特定的内存位置分配内存?

最佳答案

您可能需要placement new,它实际上是将您的对象“放置/构造”在特定的内存地址中。 Placement new 分配内存,您应该为对象手动调用析构函数。具有以下语法

char memory[sizeof(Fred)];   // allocate a block of memory with sizeof(Fred)  
void* place = memory;
Fred* f = new(place) Fred();
// The pointers f and place will be equal

f->~Fred(); // explicitly delete the object *not* the memory block.

指南是不要使用 Placement new 除非你知道你在做什么。例如专门的内存分配器,您确信它会提高性能。例如在游戏中经常会创建一个内存池,其中不断创建和删除许多对象,您可以分配特定大小的内存块,然后构造和删除对象(重复使用内存块)。

关于c++ - 有没有办法从特定的内存位置分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26581674/

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