我在PC-Lint(au-misra-cpp.lnt)中收到此错误:



在此代码上:

CParameterInfo* infoPtr = new CParameterInfo();
std::shared_ptr<CParameterInfo> info(infoPtr);

我试图以不同的方式编写代码,但是找不到一种不会产生上述错误的方式。

是否可以使代码符合MISRA?

最佳答案

我猜想避免构造函数可能会起作用:

auto infoPtr = std::make_shared<CParameterInfo>();

这也具有仅执行一次内存分配的优点,而对象的单独创建和共享状态则需要两个。

关于c++ - 如何在不违反MISRA C++ 2008咨询规则14-8-2的情况下创建std::shared_ptr?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17996121/

10-13 04:58