gpt4 book ai didi

c++ - 是否保证 std::vector 每个使用分配函数分配的内存也将通过单个解除分配调用立即解除分配?

转载 作者:行者123 更新时间:2023-11-27 22:49:00 24 4
gpt4 key购买 nike

我正在为 std::vector 编写自定义分配器,想知道 std::vector 如何使用指定的分配器?可以为 5 个对象分配内存,然后部分释放内存,例如首先释放 2 个元素,然后释放 3 个元素...(我看不出有任何理由不这样做)。

标准中有没有提到它?我找不到任何东西。

最佳答案

Is it guaranteed that std::vector each allocated memory with allocate function, will also deallocate at once, with single deallocate call?

是的。 std::allocator::deallocate的原型(prototype)是

void deallocate( pointer p, size_type n );

May it allocate memory for 5 objects, and then deallocate memory partially, for example at first 2 element, then 3 elements... (I don't see any reason not to do so).

但是 n 不能与之前传递给匹配的 allocate 函数的不同,如 explained in the spec. :

Deallocates the storage referenced by the pointer p, which must be a pointer obtained by an earlier call to allocate(). The argument n must be equal to the first argument of the call to allocate() that originally produced p.

基本上,deallocate 的参数是

  1. allocate 返回的任何内容>
  2. 为获取而传递的对应的n

关于c++ - 是否保证 std::vector 每个使用分配函数分配的内存也将通过单个解除分配调用立即解除分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39657476/

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