我在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/