相关疑难解决方法(0)

基于堆栈缓冲的STL分配器?

我想知道是否可行的C++标准库兼容allocator使用(固定大小)缓冲区,它存在于堆栈中.

不知怎的,似乎这个问题在SO上还没有被问过这个问题,尽管它可能已经在其他地方被暗示过了.

所以基本上,它似乎是,只要我去搜索,它应该能够创建一个使用固定大小的缓冲区的分配.现在,乍一看,这应该意味着它应该有可能有一个使用固定大小的缓冲区,堆栈上的"生活"的分配,但它确实出现,这周围也没有普遍执行等.

让我举一个我的意思的例子:

{ ...
  char buf[512];
  typedef ...hmm?... local_allocator; // should use buf
  typedef std::basic_string<char, std::char_traits<char>, local_allocator> lstring;
  lstring str; // string object of max. 512 char
}
Run Code Online (Sandbox Code Playgroud)

这怎么可以实现?


这个问题答案(感谢R. Martinho Fernandes)链接到来自铬源的基于堆栈的分配器:http://src.chromium.org/viewvc/chrome/trunk/src/base/stack_container.h

然而,这个类似乎非常特殊,特别是因为StackAllocator 它没有默认的ctor - 而且我认为每个分配器类都需要一个默认的ctor.

c++ stack stl allocator

37
推荐指数
3
解决办法
1万
查看次数

Linux 内核 `min` 宏

我正在查看Linux内核源代码(kernel.h),我发现了这个min函数的宏:

#ifndef max
#define max(x, y) ({                \
    typeof(x) _max1 = (x);          \
    typeof(y) _max2 = (y);          \
    (void) (&_max1 == &_max2);      \
    _max1 > _max2 ? _max1 : _max2; })
#endif
Run Code Online (Sandbox Code Playgroud)

现在我想知道(void) (&_max1 == &_max2);line 有什么作用?

c macros

3
推荐指数
1
解决办法
5309
查看次数

标签 统计

allocator ×1

c ×1

c++ ×1

macros ×1

stack ×1

stl ×1