是否保证std::vector每次使用allocate函数分配的内存,也会通过单个deallocate调用立即释放?
Is it guaranteed that std::vector each allocated memory with allocate function, will also deallocate at once, with single deallocate call?
我正在为std::vector编写自定义分配器,并想知道std::vector如何使用指定的分配器?它是否可以为5个对象分配内存,然后部分地释放内存,例如首先是2个元素,然后是3个元素……(我看不出有什么理由不这样做。)
标准中有没有提到这一点?我找不到任何东西
是否保证
std::vector
每个分配的内存与allocate函数,也将在一次释放,与单一的deallocate调用?
是的。std::allocator::deallocate
的原型为
void deallocate( pointer p, size_type n );
可以为5个对象分配内存,然后部分释放内存,例如先2个元素,然后3个元素…(我看不出有什么理由不这样做。)
但是n
不能与之前传递给匹配的allocate
函数的不同,如规范中所解释的:
基本上,释放指针p所引用的存储空间,该指针必须是先前调用allocate()方法获得的指针。参数n必须等于最初产生p的allocate()调用的第一个参数。
deallocate
的参数是
-
allocate
返回的内容 - 为获取它而传递的相应
n
相关文章:
- C++调用具有 *this 属性的单个帮助程序函数
- C++:带有大括号初始化列表的函数调用表达式 - 标准是否规定在单个元素列表的微不足道的情况下忽略大括号?
- 如何在单个模板调用中传递const_iterator和非const迭代器
- 写入渲染缓冲区并使用单个渲染调用使用 OpenGL 显示
- 在单个排序调用C++中对多个向量进行排序
- 如何使用单个对象调用具有相同名称的两个类函数
- 如何在C 中的单个构造函数中调用多个构造函数
- 为什么为单个赋值操作调用复制构造函数和重载赋值运算符
- 删除 max 并添加新元素 c++ std::make_heap 时进行单个'Heapify'调用
- 为什么我不能在同一分配中保留两个连续的内存区域,而不通过单个调用保留这两个区域?
- 为什么此代码将字符串初始化为单个字符调用initializer_list构造函数
- 将多个函数调用折叠为单个函数?
- 在单个指针数组中调用不同派生类的虚拟方法
- 使用CreateProcess尽可能使用单个命令参数调用exec*函数
- 函数在另一个函数中调用时返回 false,而单个返回类型为 true
- 如何通过重用单个API函数来调用不同的操作
- C++ Linux 套接字,它在单个调用中将字符串数组 (char**) 作为串联字符串发送
- C++:用单个函数调用替换多个索引相等性测试
- 是具有单个非类型模板参数参数的函数调用表达式
- C++While循环在单个函数调用中重复调用