我们正在使用C++开发一个在 Windows CE 4 嵌入式系统上运行的应用程序。
我们的一个限制条件是该应用程序使用的所有内存都必须在启动时分配,而不得在其它时间进行内存分配操作。我们编写了许多容器和算法,这些容器和算法只使用预先分配的内存,而不会重新分配新的内存。
您认为在这种情况下,我们能否使用 Boost 库来代替我们自己编写的容器呢?
欢迎提出任何意见和建议!
非常感谢,
Nic
我们正在使用C++开发一个在 Windows CE 4 嵌入式系统上运行的应用程序。
我们的一个限制条件是该应用程序使用的所有内存都必须在启动时分配,而不得在其它时间进行内存分配操作。我们编写了许多容器和算法,这些容器和算法只使用预先分配的内存,而不会重新分配新的内存。
您认为在这种情况下,我们能否使用 Boost 库来代替我们自己编写的容器呢?
欢迎提出任何意见和建议!
非常感谢,
Nic
不要使用Boost。
这是一个庞大的库,您的基本内存分配需求与库设计者的需求非常不同。
即使您可以使用自定义分配器使当前版本的Boost按照您的要求工作,它也可能会在新版本的Boost中出现问题。
可以随意查看Boost源代码以获取一些有用的想法,但对于您需要的内容,请使用自己的实现。
我正在研究这个问题——我想使用循环缓冲区、无锁容器和异步 I/O,而且我更喜欢使用内存池而不是分配动态内存。
到目前为止,我看到的最大问题是,在许多地方都使用了 shared_ptr
,没有简单的方法可以将其替换为 intrusive_ptr
。由于 shared_ptr
分配动态内存来跟踪引用计数,所以我不能在嵌入式系统中使用它。
解决这个问题看起来是可行的,但需要大量工作——我必须扩展包含 shared_ptr
的任何类的模板规范,以便在需要时可以将共享指针的特定类型更改为 intrusive_ptr
。现在我必须考虑这将需要多少工作,与编写我需要的 Boost 特性的工作量相比如何。这不是一个愉快的地方。
我希望有人指出我错在哪里。