似乎无法找到野外现有的任何东西,这似乎很奇怪。std兼容stringstream使用堆栈分配存储?
因此,在我推出自己的产品之前,有没有人知道在堆栈上分配存储空间的std兼容stringstream?
我想有2种方法来实现这一目标:
最初使用一个静态大小的缓冲区栈上(可能是模板参数允许编译时定制)
- 当空间用完恢复使用动态存储
- 当空间耗尽使用
alloca
增加栈存储
这将异体w短于预定大小的字符串快速输入到字符串流中。
对于初始大小的合适选择将意味着可以实现诸如日志记录之类的操作,而无需从堆中频繁调整大小。
你不能使用'_alloca',因为它不会影响调用者的堆栈(即使用stringstream的函数)。 – 2011-12-23 20:37:27
我有一个日志对象,它当前使用一个内部的stringstream对象来存储记录的字符串。在构建字符串时多次调用'operator <<'可能导致多个堆分配。如果我可以使用一个使用堆栈分配存储来存储当前日志行的stringstream类,这将更有效率。 – 2011-12-23 20:43:13