Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么';s std::aligned_alloc()的重新分配等价物?_C++_C++17_Memory Alignment_Dynamic Allocation_Memory Reallocation - Fatal编程技术网

C++ 什么';s std::aligned_alloc()的重新分配等价物?

C++ 什么';s std::aligned_alloc()的重新分配等价物?,c++,c++17,memory-alignment,dynamic-allocation,memory-reallocation,C++,C++17,Memory Alignment,Dynamic Allocation,Memory Reallocation,我注意到进入C++17,我喜欢它。但是-当我需要重新分配时会发生什么?我可以手动执行此操作(假设当前分配地址的可用空间正好是我要求的空间量),但标准库中不应该有这样的功能吗?没有类似的标准调用 P>更进一步,微软最新的C++实现仍然有自己的 -AligNeDyMalCube()/Cube >,而不是现在标准化的代码>代码:::AlgEndIdAlAcLoor()/,和: 按照C11的规定,可能永远不会实现aligned_alloc() 它在某种程度上与我们的实现不兼容(即 free()必须能够

我注意到进入C++17,我喜欢它。但是-当我需要重新分配时会发生什么?我可以手动执行此操作(假设当前分配地址的可用空间正好是我要求的空间量),但标准库中不应该有这样的功能吗?

没有类似的标准调用

<> P>更进一步,微软最新的C++实现仍然有自己的<代码> -AligNeDyMalCube()/Cube >,而不是现在标准化的代码>代码:::AlgEndIdAlAcLoor()/<代码>,和:

按照C11的规定,可能永远不会实现aligned_alloc() 它在某种程度上与我们的实现不兼容(即 free()必须能够处理高度对齐的分配)


在他们(微软)的下划线前缀实现中,他们确实为您提供了:-)

经过一点搜索,我在标准库中找不到任何可用于显式重新分配的内容,但c++17确实有一个
std::align()
函数,这使得编写自己的
realloc()
不会太困难(并不是说这太难了)。这个链接是:相关的,如果不是本质上的重复:@Alerra:问题是,作为一个用户,我不知道还有多少可用空间,所以我必须过于保守;而系统库或内核确实知道;所以我会分配比我应该分配的更多的空间……这是一个很好的观点。我在搜索so和happene关于这个问题的另一个问题(这是一个非常有效的问题),但确实是奇怪的是C++没有和标准库<代码> RealCube()/Cux>支持我所知道的对齐方式。也许在将来的版本中?我不确定它们是否会给你一个代码:STD::AlgEndIdRealCube()因为如果无法扩展当前缓冲区,则需要获得一个新的缓冲区,复制所有内容,然后释放旧的缓冲区。如果有非平凡类型,则这不是小事。本质上,这将是重建
向量