小编dsc*_*ltz的帖子

这是传递可选/ NULL shared_ptr参数的好习惯吗?

我是shared_ptrs的新手,并一直在努力处理"可选"指针参数的正确方法.也就是说,如何最好地将指针参数传递给方法,其中任何一个方法在任何给定的调用中都可能为NULL.这是使用原始指针的简化示例:

class Obj {
   SomeType *ptrA;
   SomeType *ptrB;
   ...
   void method(SomeType* a, SomeType* b) {
      ptrA = a;
      ptrB = b;
   }
}
Run Code Online (Sandbox Code Playgroud)

现在切换到shared_ptrs:

class Obj {
   shared_ptr<SomeType> ptrA;
   shared_ptr<SomeType> ptrB;

   // Option 1: pointers to shared pointers:

   void method1(shared_ptr<SomeType>* a, shared_ptr<SomeType>* b) {
      if (a) ptrA = *a;
      else   ptrA.reset();
      // repeat for b
   }

   // Option 2: pass empty shared_ptrs as analog for NULL

   void method2(shared_ptr<SomeType> a, shared_ptr<SomeType> b) {
      ptrA = a;
      ptrB = b;
   }
} …
Run Code Online (Sandbox Code Playgroud)

c++ shared-ptr

2
推荐指数
1
解决办法
2869
查看次数

Go的概况是"永远在线"吗?

我想在我的Go程序中添加命令行标志来启用/禁用cpu和内存分析.使用pprof.StartCPUProfile()显式启用CPU分析.但是未明确启用内存分析.你只需在退出时调用pprof.WriteHeapProfile().如果我从不进行这些调用,是否存在与任何一种分析形式相关的运行时成本?如果没有,这是否意味着内存分析基本上始终开启?

profiling go

2
推荐指数
1
解决办法
306
查看次数

为什么TAP :: Harness Perl模块有一个"NotBuild.PL"文件?

TAP :: Harness 3.23 tarball包含一个NotBuild.PL文件(并没有Build.PL文件),但README特别指出:

要使用Module :: Build(首选),请执行以下操作:

perl Build.PL
./Build
./Build test
./Build install
Run Code Online (Sandbox Code Playgroud)

这只是一个疏忽还是有一些理由避免使用Module :: Build?这是Build.PL文件正常分布的方式吗?

perl tap

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

标签 统计

c++ ×1

go ×1

perl ×1

profiling ×1

shared-ptr ×1

tap ×1