我在写一个简单的内存竞技场分配器,并面临一个异常安全的小问题。情况是当你分配一个本身调用分配器的对象时。内存池的目标是一次分配一堆对象,然后在池被销毁时全部删除它们。 {
MemoryArena m;
std::string* ptr = m.Allocate<std::string>();
// use ptr whatever
// Cleaned up
如何确保某个类的某个实例永远不会为空?有人告诉我使用Debug.Assert(),但通过这样做,我只能确保代码在调试模式下工作,而我想确保发行版中的is-never-null条件。 例如,在过去,我写了这样的代码: public string MyString
{
get
{
if(instance1.property1.Equals("bla"))
{
re
我正在讨论如何正确处理容器参数。 我们有一个函数,它在容器参数,并希望只返回装满容器什么功能付诸它: class bar;
void foo(std::vector<bar> &bars)
{
//do stuff that fills bars.
//exceptions may be thrown.
//we may also legally return