学做视频的网站有哪些内容,wordpress重装php,网站运营分析,seo公司中国目录VC6标准分配器BC5标准分配器G2.9标准分配器VC6标准分配器
VCx中源码可以在电脑路径中找#xff1a; [D:\Program Files\VisualStudio\Community\VC\Tools\MSVC\14.28.29333\include\xmemory] 不过太多了。大概在837行左右有关于allocator代码。还是先看侯捷PPT上的吧。 … 目录VC6标准分配器BC5标准分配器G2.9标准分配器 VC6标准分配器
VCx中源码可以在电脑路径中找 [D:\Program Files\VisualStudio\Community\VC\Tools\MSVC\14.28.29333\include\xmemory] 不过太多了。大概在837行左右有关于allocator代码。还是先看侯捷PPT上的吧。 在VC中使用容器都是通过allocator取得的。allocator都是通过调用malloc函数所以都会有cookie。 分配类型是通过元素类型为单位的。 具体用法可以参考https://docs.microsoft.com/zh-cn/cpp/standard-library/allocators-header?viewmsvc-160官方文档。
BC5标准分配器
与VC情况完全一样。
现在已知标准库提供的分配器都是直接调用malloc每个容器内部都会存在一个cookie。cookie作用是记录区块的大小只有在区块大小一样的情况下才能简化cookie存在。容器中每个元素大小一样所以可以不用cookie。
G2.9标准分配器
与上面一致没有特殊设计。但是所有容器都没有使用到标准分配器std::allocator而是使用std::alloc。 alloc是个classtypeallocate是其内部的静态函数所以可以出现alloc::allocate()、alloc::deallocate()的用法。 注意alloc::allocate(512)表示分配了512个字节而非VC下的元素类型 G2.9的std::alloc在G4.9转变为__gnu_cxx::__pool_alloc内容也做了一些修改。alloc或者说__pool_alloc的好处就是省掉了相同元素的cookie。