[{"data":1,"prerenderedAt":2355},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop52-cpp":31,"surround-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop52-cpp":1669,"sidebar-sei-cert-cpp-coding-standard":1676},[4,8],{"title":5,"path":6,"_path":6,"fromAppConfig":7},"Home","\u002F",true,{"title":9,"path":10,"children":11,"_path":30,"fromAppConfig":7},"Coding Standards","\u002Fcoding-standards\u002F",[12,15,18,21,24,27],{"title":13,"path":14},"Android Coding Standard","\u002Fandroid-secure-coding-standard\u002F",{"title":16,"path":17},"C Coding Standard","\u002Fsei-cert-c-coding-standard\u002F",{"title":19,"path":20},"C++ Coding Standard","\u002Fsei-cert-cpp-coding-standard\u002F",{"title":22,"path":23},"Fortran Coding Standard","\u002Fsei-cert-fortran-coding-standard\u002F",{"title":25,"path":26},"Java Coding Standard","\u002Fsei-cert-oracle-coding-standard-for-java\u002F",{"title":28,"path":29},"Perl Coding Standard","\u002Fsei-cert-perl-coding-standard\u002F","\u002Fcoding-standards",{"id":32,"title":33,"body":34,"description":1655,"extension":1656,"meta":1657,"navigation":7,"path":1665,"seo":1666,"stem":1667,"__hash__":1668},"content\u002F5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F04.oop52-cpp.md","OOP52-CPP. Do not delete a polymorphic object without a virtual destructor",{"type":35,"value":36,"toc":1644},"minimark",[37,41,51,66,85,90,121,130,139,269,272,283,390,394,403,507,511,518,671,688,698,1116,1120,1134,1200,1204,1531,1535,1549,1553,1578,1582,1616,1619,1640],[38,39,33],"h1",{"id":40},"oop52-cpp-do-not-delete-a-polymorphic-object-without-a-virtual-destructor",[42,43,44,45,50],"p",{},"The C++ Standard, [expr.delete], paragraph 3 [ ",[46,47,49],"a",{"href":48},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-ISO\u002FIEC14882-2014","ISO\u002FIEC 14882-2014"," ], states the following:",[52,53,54],"blockquote",{},[42,55,56,57,61,62,65],{},"In the first alternative ( ",[58,59,60],"em",{},"delete object"," ), if the static type of the object to be deleted is different from its dynamic type, the static type shall be a base class of the dynamic type of the object to be deleted and the static type shall have a virtual destructor or the behavior is undefined. In the second alternative ( ",[58,63,64],{},"delete array"," ) if the dynamic type of the object to be deleted differs from its static type, the behavior is undefined.",[42,67,68,69,73,74,76,77,79,80,84],{},"Do not delete an object of derived class type through a pointer to its base class type that has a non- ",[70,71,72],"code",{},"virtual"," destructor. Instead, the base class should be defined with a ",[70,75,72],{}," destructor. Deleting an object through a pointer to a type without a ",[70,78,72],{}," destructor results in ",[46,81,83],{"href":82},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-undefinedbehavior","undefined behavior"," .",[86,87,89],"h2",{"id":88},"noncompliant-code-example","Noncompliant Code Example",[42,91,92,93,96,97,100,101,104,105,107,108,110,111,114,115,117,118,120],{},"In this noncompliant example, ",[70,94,95],{},"b"," is a polymorphic pointer type whose static type is ",[70,98,99],{},"  Base * "," and whose dynamic type is ",[70,102,103],{},"  Derived * "," . When ",[70,106,95],{}," is deleted, it results in ",[46,109,83],{"href":82}," because ",[70,112,113],{},"Base"," does not have a ",[70,116,72],{}," destructor. The C++ Standard, [class.dtor], paragraph 4 [ ",[46,119,49],{"href":48}," ], states the following :",[52,122,123],{},[42,124,125,126,129],{},"If a class has no user-declared destructor, a destructor is implicitly declared as defaulted. An implicitly declared destructor is an ",[70,127,128],{},"   inline public  "," member of its class.",[42,131,132,133,135,136,138],{},"The implicitly declared destructor is not declared as ",[70,134,72],{}," even in the presence of other ",[70,137,72],{}," functions.",[140,141,143],"code-block",{"quality":142},"bad",[144,145,150],"pre",{"className":146,"code":147,"language":148,"meta":149,"style":149},"language-cpp shiki shiki-themes github-light-high-contrast github-dark-high-contrast monokai","struct Base {\n  virtual void f();\n};\n \nstruct Derived : Base {};\n \nvoid f() {\n  Base *b = new Derived();\n  \u002F\u002F ...\n  delete b;\n}\n","cpp","",[70,151,152,169,186,192,198,209,214,225,247,254,263],{"__ignoreMap":149},[153,154,157,161,165],"span",{"class":155,"line":156},"line",1,[153,158,160],{"class":159},"sMkm0","struct",[153,162,164],{"class":163},"sSOQW"," Base",[153,166,168],{"class":167},"sgGSh"," {\n",[153,170,172,176,179,183],{"class":155,"line":171},2,[153,173,175],{"class":174},"sDW38","  virtual",[153,177,178],{"class":159}," void",[153,180,182],{"class":181},"sx5EZ"," f",[153,184,185],{"class":167},"();\n",[153,187,189],{"class":155,"line":188},3,[153,190,191],{"class":167},"};\n",[153,193,195],{"class":155,"line":194},4,[153,196,197],{"class":167}," \n",[153,199,201,203,206],{"class":155,"line":200},5,[153,202,160],{"class":159},[153,204,205],{"class":163}," Derived",[153,207,208],{"class":167}," : Base {};\n",[153,210,212],{"class":155,"line":211},6,[153,213,197],{"class":167},[153,215,217,220,222],{"class":155,"line":216},7,[153,218,219],{"class":159},"void",[153,221,182],{"class":181},[153,223,224],{"class":167},"() {\n",[153,226,228,231,234,237,240,243,245],{"class":155,"line":227},8,[153,229,230],{"class":163},"  Base",[153,232,233],{"class":174}," *",[153,235,236],{"class":167},"b ",[153,238,239],{"class":174},"=",[153,241,242],{"class":174}," new",[153,244,205],{"class":181},[153,246,185],{"class":167},[153,248,250],{"class":155,"line":249},9,[153,251,253],{"class":252},"sqELk","  \u002F\u002F ...\n",[153,255,257,260],{"class":155,"line":256},10,[153,258,259],{"class":174},"  delete",[153,261,262],{"class":167}," b;\n",[153,264,266],{"class":155,"line":265},11,[153,267,268],{"class":167},"}\n",[86,270,89],{"id":271},"noncompliant-code-example-1",[42,273,274,275,278,279,282],{},"In this noncompliant example, the explicit pointer operations have been replaced with a smart pointer object, demonstrating that smart pointers suffer from the same problem as other pointers. Because the default deleter for ",[70,276,277],{},"std::unique_ptr"," calls ",[70,280,281],{},"delete"," on the internal pointer value, the resulting behavior is identical to the previous noncompliant example.",[140,284,285],{"quality":142},[144,286,288],{"className":146,"code":287,"language":148,"meta":149,"style":149},"#include \u003Cmemory>\n \nstruct Base {\n  virtual void f();\n};\n \nstruct Derived : Base {};\n \nvoid f() {\n  std::unique_ptr\u003CBase> b = std::make_unique\u003CDerived>();\n}\n",[70,289,290,299,303,311,321,325,329,337,341,349,386],{"__ignoreMap":149},[153,291,292,295],{"class":155,"line":156},[153,293,294],{"class":174},"#include",[153,296,298],{"class":297},"sQ5S0"," \u003Cmemory>\n",[153,300,301],{"class":155,"line":171},[153,302,197],{"class":167},[153,304,305,307,309],{"class":155,"line":188},[153,306,160],{"class":159},[153,308,164],{"class":163},[153,310,168],{"class":167},[153,312,313,315,317,319],{"class":155,"line":194},[153,314,175],{"class":174},[153,316,178],{"class":159},[153,318,182],{"class":181},[153,320,185],{"class":167},[153,322,323],{"class":155,"line":200},[153,324,191],{"class":167},[153,326,327],{"class":155,"line":211},[153,328,197],{"class":167},[153,330,331,333,335],{"class":155,"line":216},[153,332,160],{"class":159},[153,334,205],{"class":163},[153,336,208],{"class":167},[153,338,339],{"class":155,"line":227},[153,340,197],{"class":167},[153,342,343,345,347],{"class":155,"line":249},[153,344,219],{"class":159},[153,346,182],{"class":181},[153,348,224],{"class":167},[153,350,351,354,357,360,363,365,368,370,373,375,378,380,383],{"class":155,"line":256},[153,352,353],{"class":163},"  std",[153,355,356],{"class":167},"::",[153,358,359],{"class":163},"unique_ptr",[153,361,362],{"class":167},"\u003C",[153,364,113],{"class":163},[153,366,367],{"class":167},"> b ",[153,369,239],{"class":174},[153,371,372],{"class":163}," std",[153,374,356],{"class":167},[153,376,377],{"class":181},"make_unique",[153,379,362],{"class":167},[153,381,382],{"class":163},"Derived",[153,384,385],{"class":167},">();\n",[153,387,388],{"class":155,"line":265},[153,389,268],{"class":167},[86,391,393],{"id":392},"compliant-solution","Compliant Solution",[42,395,396,397,399,400,402],{},"In this compliant solution, the destructor for ",[70,398,113],{}," has an explicitly declared ",[70,401,72],{}," destructor, ensuring that the polymorphic delete operation results in well-defined behavior.",[140,404,406],{"quality":405},"good",[144,407,409],{"className":146,"code":408,"language":148,"meta":149,"style":149},"struct Base {\n  virtual ~Base() = default;\n  virtual void f();\n};\n\nstruct Derived : Base {};\n\nvoid f() {\n  Base *b = new Derived();\n  \u002F\u002F ...\n  delete b;\n}\n",[70,410,411,419,437,447,451,456,464,468,476,492,496,502],{"__ignoreMap":149},[153,412,413,415,417],{"class":155,"line":156},[153,414,160],{"class":159},[153,416,164],{"class":163},[153,418,168],{"class":167},[153,420,421,423,426,429,431,434],{"class":155,"line":171},[153,422,175],{"class":174},[153,424,425],{"class":181}," ~Base",[153,427,428],{"class":167},"() ",[153,430,239],{"class":174},[153,432,433],{"class":174}," default",[153,435,436],{"class":167},";\n",[153,438,439,441,443,445],{"class":155,"line":188},[153,440,175],{"class":174},[153,442,178],{"class":159},[153,444,182],{"class":181},[153,446,185],{"class":167},[153,448,449],{"class":155,"line":194},[153,450,191],{"class":167},[153,452,453],{"class":155,"line":200},[153,454,455],{"emptyLinePlaceholder":7},"\n",[153,457,458,460,462],{"class":155,"line":211},[153,459,160],{"class":159},[153,461,205],{"class":163},[153,463,208],{"class":167},[153,465,466],{"class":155,"line":216},[153,467,455],{"emptyLinePlaceholder":7},[153,469,470,472,474],{"class":155,"line":227},[153,471,219],{"class":159},[153,473,182],{"class":181},[153,475,224],{"class":167},[153,477,478,480,482,484,486,488,490],{"class":155,"line":249},[153,479,230],{"class":163},[153,481,233],{"class":174},[153,483,236],{"class":167},[153,485,239],{"class":174},[153,487,242],{"class":174},[153,489,205],{"class":181},[153,491,185],{"class":167},[153,493,494],{"class":155,"line":256},[153,495,253],{"class":252},[153,497,498,500],{"class":155,"line":265},[153,499,259],{"class":174},[153,501,262],{"class":167},[153,503,505],{"class":155,"line":504},12,[153,506,268],{"class":167},[86,508,510],{"id":509},"exceptions","Exceptions",[42,512,513,517],{},[514,515,516],"strong",{},"OOP52-CPP:EX0"," : Deleting a polymorphic object without a virtual destructor is permitted if the object is referenced by a pointer to its class, rather than via a pointer to a class it inherits from.",[140,519,520],{"quality":405},[144,521,523],{"className":146,"code":522,"language":148,"meta":149,"style":149},"class Base {\npublic:\n  \u002F\u002F ...\n  virtual void AddRef() = 0;\n  virtual void Destroy() = 0;\n};\n\nclass Derived final : public Base {\npublic:\n  \u002F\u002F ...\n  virtual void AddRef() { \u002F* ... *\u002F }\n  virtual void Destroy() { delete this; }\nprivate:\n  ~Derived() {}\n};\n",[70,524,525,534,539,543,562,579,583,587,606,610,614,631,651,657,666],{"__ignoreMap":149},[153,526,527,530,532],{"class":155,"line":156},[153,528,529],{"class":159},"class",[153,531,164],{"class":163},[153,533,168],{"class":167},[153,535,536],{"class":155,"line":171},[153,537,538],{"class":159},"public:\n",[153,540,541],{"class":155,"line":188},[153,542,253],{"class":252},[153,544,545,547,549,552,554,556,560],{"class":155,"line":194},[153,546,175],{"class":174},[153,548,178],{"class":159},[153,550,551],{"class":181}," AddRef",[153,553,428],{"class":167},[153,555,239],{"class":174},[153,557,559],{"class":558},"sFRm2"," 0",[153,561,436],{"class":167},[153,563,564,566,568,571,573,575,577],{"class":155,"line":200},[153,565,175],{"class":174},[153,567,178],{"class":159},[153,569,570],{"class":181}," Destroy",[153,572,428],{"class":167},[153,574,239],{"class":174},[153,576,559],{"class":558},[153,578,436],{"class":167},[153,580,581],{"class":155,"line":211},[153,582,191],{"class":167},[153,584,585],{"class":155,"line":216},[153,586,455],{"emptyLinePlaceholder":7},[153,588,589,591,593,596,599,602,604],{"class":155,"line":227},[153,590,529],{"class":159},[153,592,205],{"class":163},[153,594,595],{"class":159}," final",[153,597,598],{"class":167}," : ",[153,600,601],{"class":159},"public",[153,603,164],{"class":163},[153,605,168],{"class":167},[153,607,608],{"class":155,"line":249},[153,609,538],{"class":159},[153,611,612],{"class":155,"line":256},[153,613,253],{"class":252},[153,615,616,618,620,622,625,628],{"class":155,"line":265},[153,617,175],{"class":174},[153,619,178],{"class":159},[153,621,551],{"class":181},[153,623,624],{"class":167},"() {",[153,626,627],{"class":252}," \u002F* ... *\u002F",[153,629,630],{"class":167}," }\n",[153,632,633,635,637,639,642,644,648],{"class":155,"line":504},[153,634,175],{"class":174},[153,636,178],{"class":159},[153,638,570],{"class":181},[153,640,641],{"class":167},"() { ",[153,643,281],{"class":174},[153,645,647],{"class":646},"st-iW"," this",[153,649,650],{"class":167},"; }\n",[153,652,654],{"class":155,"line":653},13,[153,655,656],{"class":159},"private:\n",[153,658,660,663],{"class":155,"line":659},14,[153,661,662],{"class":181},"  ~Derived",[153,664,665],{"class":167},"() {}\n",[153,667,669],{"class":155,"line":668},15,[153,670,191],{"class":167},[42,672,673,674,676,677,680,681,684,685,687],{},"Note that if ",[70,675,382],{}," were not marked as ",[70,678,679],{},"final"," , then ",[70,682,683],{},"  delete this "," could actually reference a subclass of ",[70,686,382],{}," , violating this rule.",[42,689,690,693,694,697],{},[514,691,692],{},"OOP52-CPP:EX1"," : Deleting a polymorphic object without a virtual destructor is permitted if its base class has a destroying ",[70,695,696],{},"  operator delete "," that will figure out the correct derived class's destructor to call by other means.",[140,699,700],{"quality":405},[144,701,703],{"className":146,"code":702,"language":148,"meta":149,"style":149},"#include \u003Cnew>\n\nclass Base {\n  const int whichDerived;\n\nprotected:\n  Base(int whichDerived) : whichDerived(whichDerived) {}\n\npublic:\n  Base() : Base(0) {}\n  void operator delete(Base *, std::destroying_delete_t);\n};\n\nstruct Derived1 final : Base {\n  Derived1() : Base(1) {}\n};\n\nstruct Derived2 final : Base {\n  Derived2() : Base(2) {}\n};\n\nvoid Base::operator delete(Base *b, std::destroying_delete_t) {\n  switch (b->whichDerived) {\n  case 0:\n    b->~Base();\n    break;\n  case 1:\n    static_cast\u003CDerived1 *>(b)->~Derived1();\n    break;\n  case 2:\n    static_cast\u003CDerived2 *>(b)->~Derived2();\n  }\n  ::operator delete(b);\n}\n\nvoid f() {\n  Base *b = new Derived1();\n  \u002F\u002F ...\n  delete b;\n}\n",[70,704,705,712,716,724,735,739,744,767,771,775,792,825,829,833,845,861,866,871,883,900,905,910,943,952,963,974,982,992,1012,1019,1029,1046,1052,1063,1068,1073,1082,1099,1104,1111],{"__ignoreMap":149},[153,706,707,709],{"class":155,"line":156},[153,708,294],{"class":174},[153,710,711],{"class":297}," \u003Cnew>\n",[153,713,714],{"class":155,"line":171},[153,715,455],{"emptyLinePlaceholder":7},[153,717,718,720,722],{"class":155,"line":188},[153,719,529],{"class":159},[153,721,164],{"class":163},[153,723,168],{"class":167},[153,725,726,729,732],{"class":155,"line":194},[153,727,728],{"class":174},"  const",[153,730,731],{"class":159}," int",[153,733,734],{"class":167}," whichDerived;\n",[153,736,737],{"class":155,"line":200},[153,738,455],{"emptyLinePlaceholder":7},[153,740,741],{"class":155,"line":211},[153,742,743],{"class":159},"protected:\n",[153,745,746,748,751,754,758,761,764],{"class":155,"line":216},[153,747,230],{"class":181},[153,749,750],{"class":167},"(",[153,752,753],{"class":159},"int",[153,755,757],{"class":756},"sGL9b"," whichDerived",[153,759,760],{"class":167},") : ",[153,762,763],{"class":181},"whichDerived",[153,765,766],{"class":167},"(whichDerived) {}\n",[153,768,769],{"class":155,"line":227},[153,770,455],{"emptyLinePlaceholder":7},[153,772,773],{"class":155,"line":249},[153,774,538],{"class":159},[153,776,777,779,782,784,786,789],{"class":155,"line":256},[153,778,230],{"class":181},[153,780,781],{"class":167},"() : ",[153,783,113],{"class":181},[153,785,750],{"class":167},[153,787,788],{"class":558},"0",[153,790,791],{"class":167},") {}\n",[153,793,794,797,800,804,806,808,810,813,816,818,822],{"class":155,"line":265},[153,795,796],{"class":159},"  void",[153,798,799],{"class":174}," operator",[153,801,803],{"class":802},"s-GC7"," delete",[153,805,750],{"class":167},[153,807,113],{"class":163},[153,809,233],{"class":174},[153,811,812],{"class":167},", ",[153,814,815],{"class":163},"std",[153,817,356],{"class":167},[153,819,821],{"class":820},"s1Edc","destroying_delete_t",[153,823,824],{"class":167},");\n",[153,826,827],{"class":155,"line":504},[153,828,191],{"class":167},[153,830,831],{"class":155,"line":653},[153,832,455],{"emptyLinePlaceholder":7},[153,834,835,837,840,842],{"class":155,"line":659},[153,836,160],{"class":159},[153,838,839],{"class":163}," Derived1",[153,841,595],{"class":159},[153,843,844],{"class":167}," : Base {\n",[153,846,847,850,852,854,856,859],{"class":155,"line":668},[153,848,849],{"class":181},"  Derived1",[153,851,781],{"class":167},[153,853,113],{"class":181},[153,855,750],{"class":167},[153,857,858],{"class":558},"1",[153,860,791],{"class":167},[153,862,864],{"class":155,"line":863},16,[153,865,191],{"class":167},[153,867,869],{"class":155,"line":868},17,[153,870,455],{"emptyLinePlaceholder":7},[153,872,874,876,879,881],{"class":155,"line":873},18,[153,875,160],{"class":159},[153,877,878],{"class":163}," Derived2",[153,880,595],{"class":159},[153,882,844],{"class":167},[153,884,886,889,891,893,895,898],{"class":155,"line":885},19,[153,887,888],{"class":181},"  Derived2",[153,890,781],{"class":167},[153,892,113],{"class":181},[153,894,750],{"class":167},[153,896,897],{"class":558},"2",[153,899,791],{"class":167},[153,901,903],{"class":155,"line":902},20,[153,904,191],{"class":167},[153,906,908],{"class":155,"line":907},21,[153,909,455],{"emptyLinePlaceholder":7},[153,911,913,915,917,919,922,924,926,928,930,932,934,936,938,940],{"class":155,"line":912},22,[153,914,219],{"class":159},[153,916,164],{"class":163},[153,918,356],{"class":167},[153,920,921],{"class":174},"operator",[153,923,803],{"class":802},[153,925,750],{"class":167},[153,927,113],{"class":163},[153,929,233],{"class":174},[153,931,95],{"class":756},[153,933,812],{"class":167},[153,935,815],{"class":163},[153,937,356],{"class":167},[153,939,821],{"class":820},[153,941,942],{"class":167},") {\n",[153,944,946,949],{"class":155,"line":945},23,[153,947,948],{"class":174},"  switch",[153,950,951],{"class":167}," (b->whichDerived) {\n",[153,953,955,958,960],{"class":155,"line":954},24,[153,956,957],{"class":174},"  case",[153,959,559],{"class":558},[153,961,962],{"class":167},":\n",[153,964,966,969,972],{"class":155,"line":965},25,[153,967,968],{"class":167},"    b->",[153,970,971],{"class":181},"~Base",[153,973,185],{"class":167},[153,975,977,980],{"class":155,"line":976},26,[153,978,979],{"class":174},"    break",[153,981,436],{"class":167},[153,983,985,987,990],{"class":155,"line":984},27,[153,986,957],{"class":174},[153,988,989],{"class":558}," 1",[153,991,962],{"class":167},[153,993,995,998,1001,1004,1007,1010],{"class":155,"line":994},28,[153,996,997],{"class":174},"    static_cast\u003C",[153,999,1000],{"class":167},"Derived1 ",[153,1002,1003],{"class":174},"*>",[153,1005,1006],{"class":167},"(b)->",[153,1008,1009],{"class":181},"~Derived1",[153,1011,185],{"class":167},[153,1013,1015,1017],{"class":155,"line":1014},29,[153,1016,979],{"class":174},[153,1018,436],{"class":167},[153,1020,1022,1024,1027],{"class":155,"line":1021},30,[153,1023,957],{"class":174},[153,1025,1026],{"class":558}," 2",[153,1028,962],{"class":167},[153,1030,1032,1034,1037,1039,1041,1044],{"class":155,"line":1031},31,[153,1033,997],{"class":174},[153,1035,1036],{"class":167},"Derived2 ",[153,1038,1003],{"class":174},[153,1040,1006],{"class":167},[153,1042,1043],{"class":181},"~Derived2",[153,1045,185],{"class":167},[153,1047,1049],{"class":155,"line":1048},32,[153,1050,1051],{"class":167},"  }\n",[153,1053,1055,1058,1060],{"class":155,"line":1054},33,[153,1056,1057],{"class":167},"  ::operator ",[153,1059,281],{"class":174},[153,1061,1062],{"class":167},"(b);\n",[153,1064,1066],{"class":155,"line":1065},34,[153,1067,268],{"class":167},[153,1069,1071],{"class":155,"line":1070},35,[153,1072,455],{"emptyLinePlaceholder":7},[153,1074,1076,1078,1080],{"class":155,"line":1075},36,[153,1077,219],{"class":159},[153,1079,182],{"class":181},[153,1081,224],{"class":167},[153,1083,1085,1087,1089,1091,1093,1095,1097],{"class":155,"line":1084},37,[153,1086,230],{"class":163},[153,1088,233],{"class":174},[153,1090,236],{"class":167},[153,1092,239],{"class":174},[153,1094,242],{"class":174},[153,1096,839],{"class":181},[153,1098,185],{"class":167},[153,1100,1102],{"class":155,"line":1101},38,[153,1103,253],{"class":252},[153,1105,1107,1109],{"class":155,"line":1106},39,[153,1108,259],{"class":174},[153,1110,262],{"class":167},[153,1112,1114],{"class":155,"line":1113},40,[153,1115,268],{"class":167},[86,1117,1119],{"id":1118},"risk-assessment","Risk Assessment",[42,1121,1122,1123,1125,1126,1128,1129,1133],{},"Attempting to destruct a polymorphic object that does not have a ",[70,1124,72],{}," destructor declared results in ",[46,1127,83],{"href":82}," . In practice, potential consequences include ",[46,1130,1132],{"href":1131},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-abnormaltermination","abnormal program termination"," and memory leaks.",[1135,1136,1137,1165],"table",{},[1138,1139,1140],"thead",{},[1141,1142,1143,1147,1150,1153,1156,1159,1162],"tr",{},[1144,1145,1146],"th",{},"Rule",[1144,1148,1149],{},"Severity",[1144,1151,1152],{},"Likelihood",[1144,1154,1155],{},"Detectable",[1144,1157,1158],{},"Repairable",[1144,1160,1161],{},"Priority",[1144,1163,1164],{},"Level",[1166,1167,1168],"tbody",{},[1141,1169,1170,1174,1177,1180,1183,1185,1193],{},[1171,1172,1173],"td",{},"OOP52-CPP",[1171,1175,1176],{},"Low",[1171,1178,1179],{},"Likely",[1171,1181,1182],{},"No",[1171,1184,1182],{},[1171,1186,1187],{},[153,1188,1190],{"style":1189},"color: #27ae60;",[514,1191,1192],{},"P3",[1171,1194,1195],{},[153,1196,1197],{"style":1189},[514,1198,1199],{},"L3",[86,1201,1203],{"id":1202},"automated-detection","Automated Detection",[1135,1205,1206,1222],{},[1138,1207,1208],{},[1141,1209,1210,1213,1216,1219],{},[1144,1211,1212],{},"Tool",[1144,1214,1215],{},"Version",[1144,1217,1218],{},"Checker",[1144,1220,1221],{},"Description",[1166,1223,1224,1248,1269,1290,1322,1343,1368,1390,1412,1435,1466,1485,1507],{},[1141,1225,1226,1232,1240,1245],{},[1171,1227,1228],{},[46,1229,1231],{"href":1230},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fastree","Astrée",[1171,1233,1234],{},[1235,1236,1239],"div",{"className":1237},[1238],"content-wrapper","25.10",[1171,1241,1242],{},[514,1243,1244],{},"non-virtual-public-destructor-in-non-final-class",[1171,1246,1247],{},"Partially checked",[1141,1249,1250,1256,1262,1267],{},[1171,1251,1252],{},[46,1253,1255],{"href":1254},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Faxivion-suite","Axivion Suite",[1171,1257,1258],{},[1235,1259,1261],{"className":1260},[1238],"7.12.0",[1171,1263,1264],{},[514,1265,1266],{},"CertC++-OOP52",[1171,1268],{},[1141,1270,1271,1277,1283,1288],{},[1171,1272,1273],{},[46,1274,1276],{"href":1275},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang","Clang",[1171,1278,1279],{},[1235,1280,1282],{"className":1281},[1238],"3.9",[1171,1284,1285],{},[70,1286,1287],{},"-Wdelete-non-virtual-dtor",[1171,1289],{},[1141,1291,1292,1298,1304,1316],{},[1171,1293,1294],{},[46,1295,1297],{"href":1296},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodesonar","CodeSonar",[1171,1299,1300],{},[1235,1301,1303],{"className":1302},[1238],"27.0",[1171,1305,1306,1309,1310,1309,1313],{},[514,1307,1308],{},"LANG.STRUCT.DNVD"," ",[1311,1312],"br",{},[514,1314,1315],{},"LANG.FUNCS.NFCNVPD",[1171,1317,1318,1319,1321],{},"delete with Non-Virtual Destructor ",[1311,1320],{}," Non-final Class has Non-Virtual Public Destructor",[1141,1323,1324,1330,1336,1341],{},[1171,1325,1326],{},[46,1327,1329],{"href":1328},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fhelix-qac","Helix QAC",[1171,1331,1332],{},[1235,1333,1335],{"className":1334},[1238],"2025.2",[1171,1337,1338],{},[514,1339,1340],{},"C++3402, C++3403, C++3404",[1171,1342],{},[1141,1344,1345,1351,1356,1366],{},[1171,1346,1347],{},[46,1348,1350],{"href":1349},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fklocwork","Klocwork",[1171,1352,1353],{},[1235,1354,1335],{"className":1355},[1238],[1171,1357,1358,1309,1361,1309,1363],{},[514,1359,1360],{},"CL.MLK.VIRTUAL",[1311,1362],{},[514,1364,1365],{},"CWARN.DTOR.NONVIRT.DELETE",[1171,1367],{},[1141,1369,1370,1376,1382,1387],{},[1171,1371,1372],{},[46,1373,1375],{"href":1374},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fldra","LDRA tool suite",[1171,1377,1378],{},[1235,1379,1381],{"className":1380},[1238],"9.7.1",[1171,1383,1384],{},[514,1385,1386],{},"303 S",[1171,1388,1389],{},"Partially implemented",[1141,1391,1392,1398,1404,1409],{},[1171,1393,1394],{},[46,1395,1397],{"href":1396},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fparasoft","Parasoft C\u002FC++test",[1171,1399,1400],{},[1235,1401,1403],{"className":1402},[1238],"2026.1",[1171,1405,1406],{},[514,1407,1408],{},"CERT_CPP-OOP52-a",[1171,1410,1411],{},"Define a virtual destructor in classes used as base classes which have virtual functions",[1141,1413,1414,1420,1426,1432],{},[1171,1415,1416],{},[46,1417,1419],{"href":1418},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpolyspace-bug-finder","Polyspace Bug Finder",[1171,1421,1422],{},[1235,1423,1425],{"className":1424},[1238],"R2025b",[1171,1427,1428],{},[46,1429,1431],{"href":1430},"https:\u002F\u002Fwww.mathworks.com\u002Fhelp\u002Fbugfinder\u002Fref\u002Fcertcoop52cpp.html","CERT C++: OOP52-CPP",[1171,1433,1434],{},"Checks for situations when a class has virtual functions but not a virtual destructor (rule partially covered)",[1141,1436,1437,1443,1449,1464],{},[1171,1438,1439],{},[46,1440,1442],{"href":1441},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpvs-studio","PVS-Studio",[1171,1444,1445],{},[1235,1446,1448],{"className":1447},[1238],"8.01",[1171,1450,1451,1457,1458],{},[46,1452,1454],{"href":1453},"https:\u002F\u002Fpvs-studio.com\u002Fen\u002Fdocs\u002Fwarnings\u002Fv599\u002F",[514,1455,1456],{},"V599"," , ",[514,1459,1460],{},[46,1461,1463],{"href":1462},"https:\u002F\u002Fpvs-studio.com\u002Fen\u002Fdocs\u002Fwarnings\u002Fv689\u002F","V689",[1171,1465],{},[1141,1467,1468,1474,1479,1483],{},[1171,1469,1470],{},[46,1471,1473],{"href":1472},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frulechecker","RuleChecker",[1171,1475,1476],{},[1235,1477,1239],{"className":1478},[1238],[1171,1480,1481],{},[514,1482,1244],{},[1171,1484,1247],{},[1141,1486,1487,1493,1499,1504],{},[1171,1488,1489],{},[46,1490,1492],{"href":1491},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsecurity-reviewer-static-reviewer","Security Reviewer - Static Reviewer",[1171,1494,1495],{},[1235,1496,1498],{"className":1497},[1238],"6.02",[1171,1500,1501],{},[514,1502,1503],{},"UNSAFE_06",[1171,1505,1506],{},"Fully Implemented",[1141,1508,1509,1515,1521,1529],{},[1171,1510,1511],{},[46,1512,1514],{"href":1513},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsonarqube-ccpp-plugin","SonarQube C\u002FC++ Plugin",[1171,1516,1517],{},[1235,1518,1520],{"className":1519},[1238],"4.10",[1171,1522,1523],{},[514,1524,1525],{},[46,1526,1528],{"href":1527},"https:\u002F\u002Fwww.sonarsource.com\u002Fproducts\u002Fcodeanalyzers\u002Fsonarcfamilyforcpp\u002Frules-cpp.html#RSPEC-1235","S1235",[1171,1530],{},[86,1532,1534],{"id":1533},"related-vulnerabilities","Related Vulnerabilities",[42,1536,1537,1538,1542,1543,84],{},"Search for other ",[46,1539,1541],{"href":1540},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-vulnerability","vulnerabilities"," resulting from the violation of this rule on the ",[46,1544,1548],{"href":1545,"rel":1546},"https:\u002F\u002Fwww.kb.cert.org\u002Fvuls\u002Fsearch\u002F?q=OOP52-CPP",[1547],"nofollow","CERT website",[86,1550,1552],{"id":1551},"related-guidelines","Related Guidelines",[1135,1554,1555,1563],{},[1138,1556,1557],{},[1141,1558,1559,1561],{},[1144,1560],{},[1144,1562],{},[1166,1564,1565],{},[1141,1566,1567,1572],{},[1171,1568,1569],{},[46,1570,1571],{"href":20},"SEI CERT C++ Coding Standard",[1171,1573,1574],{},[46,1575,1577],{"href":1576},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp51-cpp","EXP51-CPP. Do not delete an array through a pointer of the incorrect type",[86,1579,1581],{"id":1580},"bibliography","Bibliography",[1135,1583,1584,1592],{},[1138,1585,1586],{},[1141,1587,1588,1590],{},[1144,1589],{},[1144,1591],{},[1166,1593,1594,1605],{},[1141,1595,1596,1602],{},[1171,1597,1598,1599,1601],{},"[ ",[46,1600,49],{"href":48}," ]",[1171,1603,1604],{},"Subclause 5.3.5, \"Delete\" Subclause 12.4, \"Destructors\"",[1141,1606,1607,1613],{},[1171,1608,1598,1609,1601],{},[46,1610,1612],{"href":1611},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-Stroustrup06","Stroustrup 2006",[1171,1614,1615],{},"\"Why Are Destructors Not Virtual by Default?\"",[1617,1618],"hr",{},[42,1620,1621,1309,1628,1309,1634],{},[46,1622,1624],{"href":1623},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop51-cpp",[1625,1626],"img",{"src":1627},"\u002Fattachments\u002F88046682\u002F88480621.png",[46,1629,1631],{"href":1630},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002F",[1625,1632],{"src":1633},"\u002Fattachments\u002F88046682\u002F88475556.png",[46,1635,1637],{"href":1636},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop53-cpp",[1625,1638],{"src":1639},"\u002Fattachments\u002F88046682\u002F88475555.png",[1641,1642,1643],"style",{},"html pre.shiki code .sMkm0, html code.shiki .sMkm0{--shiki-default:#A0111F;--shiki-default-font-style:inherit;--shiki-dark:#FF9492;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .sSOQW, html code.shiki .sSOQW{--shiki-default:#702C00;--shiki-default-text-decoration:inherit;--shiki-dark:#FFB757;--shiki-dark-text-decoration:inherit;--shiki-sepia:#A6E22E;--shiki-sepia-text-decoration:underline}html pre.shiki code .sgGSh, html code.shiki .sgGSh{--shiki-default:#0E1116;--shiki-dark:#F0F3F6;--shiki-sepia:#F8F8F2}html pre.shiki code .sDW38, html code.shiki .sDW38{--shiki-default:#A0111F;--shiki-dark:#FF9492;--shiki-sepia:#F92672}html pre.shiki code .sx5EZ, html code.shiki .sx5EZ{--shiki-default:#622CBC;--shiki-dark:#DBB7FF;--shiki-sepia:#A6E22E}html pre.shiki code .sqELk, html code.shiki .sqELk{--shiki-default:#66707B;--shiki-dark:#BDC4CC;--shiki-sepia:#88846F}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html pre.shiki code .sQ5S0, html code.shiki .sQ5S0{--shiki-default:#032563;--shiki-dark:#ADDCFF;--shiki-sepia:#E6DB74}html pre.shiki code .sFRm2, html code.shiki .sFRm2{--shiki-default:#023B95;--shiki-dark:#91CBFF;--shiki-sepia:#AE81FF}html pre.shiki code .st-iW, html code.shiki .st-iW{--shiki-default:#023B95;--shiki-dark:#91CBFF;--shiki-sepia:#FD971F}html pre.shiki code .sGL9b, html code.shiki .sGL9b{--shiki-default:#702C00;--shiki-default-font-style:inherit;--shiki-dark:#FFB757;--shiki-dark-font-style:inherit;--shiki-sepia:#FD971F;--shiki-sepia-font-style:italic}html pre.shiki code .s-GC7, html code.shiki .s-GC7{--shiki-default:#702C00;--shiki-dark:#FFB757;--shiki-sepia:#F8F8F2}html pre.shiki code .s1Edc, html code.shiki .s1Edc{--shiki-default:#023B95;--shiki-default-font-style:inherit;--shiki-dark:#91CBFF;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}",{"title":149,"searchDepth":171,"depth":171,"links":1645},[1646,1647,1648,1649,1650,1651,1652,1653,1654],{"id":88,"depth":171,"text":89},{"id":271,"depth":171,"text":89},{"id":392,"depth":171,"text":393},{"id":509,"depth":171,"text":510},{"id":1118,"depth":171,"text":1119},{"id":1202,"depth":171,"text":1203},{"id":1533,"depth":171,"text":1534},{"id":1551,"depth":171,"text":1552},{"id":1580,"depth":171,"text":1581},"The C++ Standard, [expr.delete], paragraph 3 [ ISO\u002FIEC 14882-2014 ], states the following:","md",{"tags":1658},[1659,1660,1661,1662,1663,1664],"review","oop","ptc","review-dms","rule","review-ajb","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop52-cpp",{"title":33,"description":1655},"5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F04.oop52-cpp","6LNzD5ixngJmJjUPqJ8d1knEXGYZqBrltAVDH382ASU",[1670,1673],{"title":1671,"path":1623,"stem":1672,"children":-1},"OOP51-CPP. Do not slice derived objects","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F03.oop51-cpp",{"title":1674,"path":1636,"stem":1675,"children":-1},"OOP53-CPP. Write constructor member initializers in the canonical order","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F05.oop53-cpp",[1677],{"title":1571,"path":1678,"stem":1679,"children":1680},"\u002Fsei-cert-cpp-coding-standard","5.sei-cert-cpp-coding-standard\u002F1.index",[1681,1682,1746,2139,2341,2351],{"title":1571,"path":1678,"stem":1679},{"title":1683,"path":1684,"stem":1685,"children":1686},"Front Matter","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F1.index",[1687,1688],{"title":1683,"path":1684,"stem":1685},{"title":1689,"path":1690,"stem":1691,"children":1692},"Introduction","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F01.index",[1693,1694,1698,1702,1706,1710,1714,1718,1722,1726,1730,1734,1738,1742],{"title":1689,"path":1690,"stem":1691},{"title":1695,"path":1696,"stem":1697},"Scope","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fscope","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F02.scope",{"title":1699,"path":1700,"stem":1701},"Audience","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Faudience","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F03.audience",{"title":1703,"path":1704,"stem":1705},"Usage","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fusage","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F04.usage",{"title":1707,"path":1708,"stem":1709},"How this Coding Standard Is Organized","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fhow-this-coding-standard-is-organized","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F05.how-this-coding-standard-is-organized",{"title":1711,"path":1712,"stem":1713},"Relation to the CERT C Coding Standard","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Frelation-to-the-cert-c-coding-standard","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F06.relation-to-the-cert-c-coding-standard",{"title":1715,"path":1716,"stem":1717},"Rules Versus Recommendations","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Frules-versus-recommendations","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F07.rules-versus-recommendations",{"title":1719,"path":1720,"stem":1721},"Tool Selection and Validation","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Ftool-selection-and-validation","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F08.tool-selection-and-validation",{"title":1723,"path":1724,"stem":1725},"Conformance Testing","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fconformance-testing","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F09.conformance-testing",{"title":1727,"path":1728,"stem":1729},"Development Process","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fdevelopment-process","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F10.development-process",{"title":1731,"path":1732,"stem":1733},"System Qualities","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fsystem-qualities","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F11.system-qualities",{"title":1735,"path":1736,"stem":1737},"Automatically Generated Code","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fautomatically-generated-code","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F12.automatically-generated-code",{"title":1739,"path":1740,"stem":1741},"Government Regulations","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fgovernment-regulations","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F13.government-regulations",{"title":1743,"path":1744,"stem":1745},"Acknowledgments","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Facknowledgments","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F14.acknowledgments",{"title":1747,"path":1748,"stem":1749,"children":1750},"Rules","\u002Fsei-cert-cpp-coding-standard\u002Frules","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F01.index",[1751,1752,1774,1808,1850,1900,1958,2018,2032,2042,2080,2106],{"title":1747,"path":1748,"stem":1749},{"title":1753,"path":1754,"stem":1755,"children":1756},"Characters and Strings (STR)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F1.index",[1757,1758,1762,1766,1770],{"title":1753,"path":1754,"stem":1755},{"title":1759,"path":1760,"stem":1761},"STR50-CPP. Guarantee that storage for strings has sufficient space for character data and the null terminator","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstr50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F2.str50-cpp",{"title":1763,"path":1764,"stem":1765},"STR52-CPP. Use valid references, pointers, and iterators to reference elements of a basic_string","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstr52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F3.str52-cpp",{"title":1767,"path":1768,"stem":1769},"STR53-CPP. Range check element access","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstr53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F4.str53-cpp",{"title":1771,"path":1772,"stem":1773},"STR51-CPP. Do not attempt to create a std::string from a null pointer","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstr51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F5.str51-cpp",{"title":1775,"path":1776,"stem":1777,"children":1778},"Concurrency (CON)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F1.index",[1779,1780,1784,1788,1792,1796,1800,1804],{"title":1775,"path":1776,"stem":1777},{"title":1781,"path":1782,"stem":1783},"CON50-CPP. Do not destroy a mutex while it is locked","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F2.con50-cpp",{"title":1785,"path":1786,"stem":1787},"CON51-CPP. Ensure actively held locks are released on exceptional conditions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F3.con51-cpp",{"title":1789,"path":1790,"stem":1791},"CON52-CPP. Prevent data races when accessing bit-fields from multiple threads","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F4.con52-cpp",{"title":1793,"path":1794,"stem":1795},"CON53-CPP. Avoid deadlock by locking in a predefined order","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F5.con53-cpp",{"title":1797,"path":1798,"stem":1799},"CON54-CPP. Wrap functions that can spuriously wake up in a loop","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F6.con54-cpp",{"title":1801,"path":1802,"stem":1803},"CON55-CPP. Preserve thread safety and liveness when using condition variables","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F7.con55-cpp",{"title":1805,"path":1806,"stem":1807},"CON56-CPP. Do not speculatively lock a non-recursive mutex that is already owned by the calling thread","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F8.con56-cpp",{"title":1809,"path":1810,"stem":1811,"children":1812},"Containers (CTR)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F01.index",[1813,1814,1818,1822,1826,1830,1834,1838,1842,1846],{"title":1809,"path":1810,"stem":1811},{"title":1815,"path":1816,"stem":1817},"CTR50-CPP. Guarantee that container indices and iterators are within the valid range","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F02.ctr50-cpp",{"title":1819,"path":1820,"stem":1821},"CTR51-CPP. Use valid references, pointers, and iterators to reference elements of a container","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F03.ctr51-cpp",{"title":1823,"path":1824,"stem":1825},"CTR52-CPP. Guarantee that library functions do not overflow","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F04.ctr52-cpp",{"title":1827,"path":1828,"stem":1829},"CTR53-CPP. Use valid iterator ranges","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F05.ctr53-cpp",{"title":1831,"path":1832,"stem":1833},"CTR54-CPP. Do not subtract iterators that do not refer to the same container","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F06.ctr54-cpp",{"title":1835,"path":1836,"stem":1837},"CTR55-CPP. Do not use an additive operator on an iterator if the result would overflow","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F07.ctr55-cpp",{"title":1839,"path":1840,"stem":1841},"CTR56-CPP. Do not use pointer arithmetic on polymorphic objects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F08.ctr56-cpp",{"title":1843,"path":1844,"stem":1845},"CTR57-CPP. Provide a valid ordering predicate","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F09.ctr57-cpp",{"title":1847,"path":1848,"stem":1849},"CTR58-CPP. Predicate function objects should not be mutable","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr\u002Fctr58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F10.ctr58-cpp",{"title":1851,"path":1852,"stem":1853,"children":1854},"Declarations and Initialization (DCL)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F01.index",[1855,1856,1860,1864,1868,1872,1876,1880,1884,1888,1892,1896],{"title":1851,"path":1852,"stem":1853},{"title":1857,"path":1858,"stem":1859},"DCL50-CPP. Do not define a C-style variadic function","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F02.dcl50-cpp",{"title":1861,"path":1862,"stem":1863},"DCL51-CPP. Do not declare or define a reserved identifier","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F03.dcl51-cpp",{"title":1865,"path":1866,"stem":1867},"DCL52-CPP. Never qualify a reference type with const or volatile","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F04.dcl52-cpp",{"title":1869,"path":1870,"stem":1871},"DCL53-CPP. Do not write syntactically ambiguous declarations","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F05.dcl53-cpp",{"title":1873,"path":1874,"stem":1875},"DCL54-CPP. Overload allocation and deallocation functions as a pair in the same scope","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F06.dcl54-cpp",{"title":1877,"path":1878,"stem":1879},"DCL55-CPP. Avoid information leakage when passing a class object across a trust boundary","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F07.dcl55-cpp",{"title":1881,"path":1882,"stem":1883},"DCL56-CPP. Avoid cycles during initialization of static objects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F08.dcl56-cpp",{"title":1885,"path":1886,"stem":1887},"DCL57-CPP. Do not let exceptions escape from destructors or deallocation functions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F09.dcl57-cpp",{"title":1889,"path":1890,"stem":1891},"DCL58-CPP. Do not modify the standard namespaces","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F10.dcl58-cpp",{"title":1893,"path":1894,"stem":1895},"DCL59-CPP. Do not define an unnamed namespace in a header file","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl59-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F11.dcl59-cpp",{"title":1897,"path":1898,"stem":1899},"DCL60-CPP. Obey the one-definition rule","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fdeclarations-and-initialization-dcl\u002Fdcl60-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F05.declarations-and-initialization-dcl\u002F12.dcl60-cpp",{"title":1901,"path":1902,"stem":1903,"children":1904},"Exceptions and Error Handling (ERR)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F01.index",[1905,1906,1910,1914,1918,1922,1926,1930,1934,1938,1942,1946,1950,1954],{"title":1901,"path":1902,"stem":1903},{"title":1907,"path":1908,"stem":1909},"ERR50-CPP. Do not abruptly terminate the program","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F02.err50-cpp",{"title":1911,"path":1912,"stem":1913},"ERR51-CPP. Handle all exceptions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F03.err51-cpp",{"title":1915,"path":1916,"stem":1917},"ERR52-CPP. Do not use setjmp() or longjmp()","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F04.err52-cpp",{"title":1919,"path":1920,"stem":1921},"ERR53-CPP. Do not reference base classes or class data members in a constructor or destructor function-try-block handler","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F05.err53-cpp",{"title":1923,"path":1924,"stem":1925},"ERR54-CPP. Catch handlers should order their parameter types from most derived to least derived","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F06.err54-cpp",{"title":1927,"path":1928,"stem":1929},"ERR55-CPP. Honor exception specifications","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F07.err55-cpp",{"title":1931,"path":1932,"stem":1933},"ERR56-CPP. Guarantee exception safety","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F08.err56-cpp",{"title":1935,"path":1936,"stem":1937},"ERR57-CPP. Do not leak resources when handling exceptions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F09.err57-cpp",{"title":1939,"path":1940,"stem":1941},"ERR58-CPP. Handle all exceptions thrown before main() begins executing","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F10.err58-cpp",{"title":1943,"path":1944,"stem":1945},"ERR59-CPP. Do not throw an exception across execution boundaries","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr59-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F11.err59-cpp",{"title":1947,"path":1948,"stem":1949},"ERR60-CPP. Exception objects must be nothrow copy constructible","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr60-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F12.err60-cpp",{"title":1951,"path":1952,"stem":1953},"ERR61-CPP. Catch exceptions by lvalue reference","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr61-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F13.err61-cpp",{"title":1955,"path":1956,"stem":1957},"ERR62-CPP. Detect errors when converting a string to a number","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexceptions-and-error-handling-err\u002Ferr62-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F06.exceptions-and-error-handling-err\u002F14.err62-cpp",{"title":1959,"path":1960,"stem":1961,"children":1962},"Expressions (EXP)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F01.index",[1963,1964,1968,1970,1974,1978,1982,1986,1990,1994,1998,2002,2006,2010,2014],{"title":1959,"path":1960,"stem":1961},{"title":1965,"path":1966,"stem":1967},"EXP50-CPP. Do not depend on the order of evaluation for side effects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F02.exp50-cpp",{"title":1577,"path":1576,"stem":1969},"5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F03.exp51-cpp",{"title":1971,"path":1972,"stem":1973},"EXP52-CPP. Do not rely on side effects in unevaluated operands","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F04.exp52-cpp",{"title":1975,"path":1976,"stem":1977},"EXP53-CPP. Do not read uninitialized memory","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F05.exp53-cpp",{"title":1979,"path":1980,"stem":1981},"EXP54-CPP. Do not access an object outside of its lifetime","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F06.exp54-cpp",{"title":1983,"path":1984,"stem":1985},"EXP55-CPP. Do not access a cv-qualified object through a cv-unqualified type","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F07.exp55-cpp",{"title":1987,"path":1988,"stem":1989},"EXP56-CPP. Do not call a function with a mismatched language linkage","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F08.exp56-cpp",{"title":1991,"path":1992,"stem":1993},"EXP57-CPP. Do not cast or delete pointers to incomplete classes","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F09.exp57-cpp",{"title":1995,"path":1996,"stem":1997},"EXP58-CPP. Pass an object of the correct type to va_start","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F10.exp58-cpp",{"title":1999,"path":2000,"stem":2001},"EXP59-CPP. Use offsetof() on valid types and members","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp59-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F11.exp59-cpp",{"title":2003,"path":2004,"stem":2005},"EXP60-CPP. Do not pass a nonstandard-layout type object across execution boundaries","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp60-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F12.exp60-cpp",{"title":2007,"path":2008,"stem":2009},"EXP61-CPP. A lambda object must not outlive any of its reference captured objects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp61-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F13.exp61-cpp",{"title":2011,"path":2012,"stem":2013},"EXP62-CPP. Do not access the bits of an object representation that are not part of the object's value representation","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp62-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F14.exp62-cpp",{"title":2015,"path":2016,"stem":2017},"EXP63-CPP. Do not rely on the value of a moved-from object","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp63-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F15.exp63-cpp",{"title":2019,"path":2020,"stem":2021,"children":2022},"Input Output (FIO)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Finput-output-fio","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F08.input-output-fio\u002F1.index",[2023,2024,2028],{"title":2019,"path":2020,"stem":2021},{"title":2025,"path":2026,"stem":2027},"FIO50-CPP. Do not alternately input and output from a file stream without an intervening positioning call","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Finput-output-fio\u002Ffio50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F08.input-output-fio\u002F2.fio50-cpp",{"title":2029,"path":2030,"stem":2031},"FIO51-CPP. Close files when they are no longer needed","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Finput-output-fio\u002Ffio51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F08.input-output-fio\u002F3.fio51-cpp",{"title":2033,"path":2034,"stem":2035,"children":2036},"Integers (INT)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fintegers-int","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F09.integers-int\u002F1.index",[2037,2038],{"title":2033,"path":2034,"stem":2035},{"title":2039,"path":2040,"stem":2041},"INT50-CPP. Do not cast to an out-of-range enumeration value","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fintegers-int\u002Fint50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F09.integers-int\u002F2.int50-cpp",{"title":2043,"path":2044,"stem":2045,"children":2046},"Memory Management (MEM)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F1.index",[2047,2048,2052,2056,2060,2064,2068,2072,2076],{"title":2043,"path":2044,"stem":2045},{"title":2049,"path":2050,"stem":2051},"MEM50-CPP. Do not access freed memory","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F2.mem50-cpp",{"title":2053,"path":2054,"stem":2055},"MEM51-CPP. Properly deallocate dynamically allocated resources","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F3.mem51-cpp",{"title":2057,"path":2058,"stem":2059},"MEM52-CPP. Detect and handle memory allocation errors","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F4.mem52-cpp",{"title":2061,"path":2062,"stem":2063},"MEM53-CPP. Explicitly construct and destruct objects when manually managing object lifetime","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F5.mem53-cpp",{"title":2065,"path":2066,"stem":2067},"MEM54-CPP. Provide placement new with properly aligned pointers to sufficient storage capacity","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F6.mem54-cpp",{"title":2069,"path":2070,"stem":2071},"MEM55-CPP. Honor replacement dynamic storage management requirements","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F7.mem55-cpp",{"title":2073,"path":2074,"stem":2075},"MEM56-CPP. Do not store an already-owned pointer value in an unrelated smart pointer","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F8.mem56-cpp",{"title":2077,"path":2078,"stem":2079},"MEM57-CPP. Avoid using default operator new for over-aligned types","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmemory-management-mem\u002Fmem57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F10.memory-management-mem\u002F9.mem57-cpp",{"title":2081,"path":2082,"stem":2083,"children":2084},"Miscellaneous (MSC)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F1.index",[2085,2086,2090,2094,2098,2102],{"title":2081,"path":2082,"stem":2083},{"title":2087,"path":2088,"stem":2089},"MSC51-CPP. Ensure your random number generator is properly seeded","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F2.msc51-cpp",{"title":2091,"path":2092,"stem":2093},"MSC52-CPP. Value-returning functions must return a value from all exit paths","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F3.msc52-cpp",{"title":2095,"path":2096,"stem":2097},"MSC53-CPP. Do not return from a function declared [[noreturn]]","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F4.msc53-cpp",{"title":2099,"path":2100,"stem":2101},"MSC54-CPP. A signal handler must be a plain old function","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F5.msc54-cpp",{"title":2103,"path":2104,"stem":2105},"MSC50-CPP. Do not use std::rand() for generating pseudorandom numbers","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Fmsc50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F6.msc50-cpp",{"title":2107,"path":2108,"stem":2109,"children":2110},"Object Oriented Programming (OOP)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F01.index",[2111,2112,2116,2117,2118,2119,2123,2127,2131,2135],{"title":2107,"path":2108,"stem":2109},{"title":2113,"path":2114,"stem":2115},"OOP50-CPP. Do not invoke virtual functions from constructors or destructors","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop50-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F02.oop50-cpp",{"title":1671,"path":1623,"stem":1672},{"title":33,"path":1665,"stem":1667},{"title":1674,"path":1636,"stem":1675},{"title":2120,"path":2121,"stem":2122},"OOP54-CPP. Gracefully handle self-copy assignment","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop54-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F06.oop54-cpp",{"title":2124,"path":2125,"stem":2126},"OOP55-CPP. Do not use pointer-to-member operators to access nonexistent members","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop55-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F07.oop55-cpp",{"title":2128,"path":2129,"stem":2130},"OOP56-CPP. Honor replacement handler requirements","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop56-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F08.oop56-cpp",{"title":2132,"path":2133,"stem":2134},"OOP57-CPP. Prefer special member functions and overloaded operators to C Standard Library functions","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop57-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F09.oop57-cpp",{"title":2136,"path":2137,"stem":2138},"OOP58-CPP. Copy operations must not mutate the source object","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop58-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F10.oop58-cpp",{"title":2140,"path":2141,"stem":2142,"children":2143},"Back Matter","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F1.index",[2144,2145,2149,2153,2323,2337],{"title":2140,"path":2141,"stem":2142},{"title":2146,"path":2147,"stem":2148},"AA. Bibliography","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F2.aa-bibliography",{"title":2150,"path":2151,"stem":2152},"BB. Definitions","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F3.bb-definitions",{"title":2154,"path":2155,"stem":2156,"children":2157},"CC. Analyzers","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F01.index",[2158,2159,2161,2165,2167,2171,2173,2177,2181,2185,2189,2193,2197,2199,2203,2207,2211,2215,2219,2223,2227,2231,2235,2237,2241,2243,2247,2250,2254,2257,2261,2263,2267,2271,2275,2277,2281,2285,2289,2291,2295,2297,2301,2305,2309,2311,2315,2319],{"title":2154,"path":2155,"stem":2156},{"title":1231,"path":1230,"stem":2160},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F02.astree",{"title":2162,"path":2163,"stem":2164},"Astrée_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fastree_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F03.astree_v",{"title":1255,"path":1254,"stem":2166},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F04.axivion-suite",{"title":2168,"path":2169,"stem":2170},"Axivion Suite_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Faxivion-suite_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F05.axivion-suite_v",{"title":1276,"path":1275,"stem":2172},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F06.clang",{"title":2174,"path":2175,"stem":2176},"Clang_38_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang_38_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F07.clang_38_v",{"title":2178,"path":2179,"stem":2180},"Clang_39_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang_39_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F08.clang_39_v",{"title":2182,"path":2183,"stem":2184},"Clang_40_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang_40_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F09.clang_40_v",{"title":2186,"path":2187,"stem":2188},"Clang_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F10.clang_v",{"title":2190,"path":2191,"stem":2192},"Codee","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodee","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F11.codee",{"title":2194,"path":2195,"stem":2196},"Codee_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodee_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F12.codee_v",{"title":1297,"path":1296,"stem":2198},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F13.codesonar",{"title":2200,"path":2201,"stem":2202},"CodeSonar_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodesonar_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F14.codesonar_v",{"title":2204,"path":2205,"stem":2206},"Coverity","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcoverity","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F15.coverity",{"title":2208,"path":2209,"stem":2210},"Coverity_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcoverity_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F16.coverity_v",{"title":2212,"path":2213,"stem":2214},"ECLAIR","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Feclair","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F17.eclair",{"title":2216,"path":2217,"stem":2218},"ECLAIR_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Feclair_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F18.eclair_v",{"title":2220,"path":2221,"stem":2222},"EDG","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fedg","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F19.edg",{"title":2224,"path":2225,"stem":2226},"Edg_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fedg_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F20.edg_v",{"title":2228,"path":2229,"stem":2230},"GCC","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fgcc","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F21.gcc",{"title":2232,"path":2233,"stem":2234},"Gcc_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fgcc_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F22.gcc_v",{"title":1329,"path":1328,"stem":2236},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F23.helix-qac",{"title":2238,"path":2239,"stem":2240},"Helix QAC_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fhelix-qac_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F24.helix-qac_v",{"title":1350,"path":1349,"stem":2242},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F25.klocwork",{"title":2244,"path":2245,"stem":2246},"Klocwork_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fklocwork_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F26.klocwork_v",{"title":2248,"path":1374,"stem":2249},"LDRA","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F27.ldra",{"title":2251,"path":2252,"stem":2253},"Ldra_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fldra_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F28.ldra_v",{"title":2255,"path":1396,"stem":2256},"Parasoft","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F29.parasoft",{"title":2258,"path":2259,"stem":2260},"Parasoft_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fparasoft_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F30.parasoft_v",{"title":1419,"path":1418,"stem":2262},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F31.polyspace-bug-finder",{"title":2264,"path":2265,"stem":2266},"Polyspace Bug Finder_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpolyspace-bug-finder_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F32.polyspace-bug-finder_v",{"title":2268,"path":2269,"stem":2270},"PRQA QA-C++","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fprqa-qa-cpp","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F33.prqa-qa-cpp",{"title":2272,"path":2273,"stem":2274},"PRQA QA-C++_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fprqa-qa-cpp_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F34.prqa-qa-cpp_v",{"title":1442,"path":1441,"stem":2276},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F35.pvs-studio",{"title":2278,"path":2279,"stem":2280},"PVS-Studio_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpvs-studio_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F36.pvs-studio_v",{"title":2282,"path":2283,"stem":2284},"Rose","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frose","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F37.rose",{"title":2286,"path":2287,"stem":2288},"Rose_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frose_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F38.rose_v",{"title":1473,"path":1472,"stem":2290},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F39.rulechecker",{"title":2292,"path":2293,"stem":2294},"RuleChecker_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frulechecker_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F40.rulechecker_v",{"title":1492,"path":1491,"stem":2296},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F41.security-reviewer-static-reviewer",{"title":2298,"path":2299,"stem":2300},"Security Reviewer - Static Reviewer_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsecurity-reviewer-static-reviewer_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F42.security-reviewer-static-reviewer_v",{"title":2302,"path":2303,"stem":2304},"Semgrep","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsemgrep","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F43.semgrep",{"title":2306,"path":2307,"stem":2308},"Semgrep_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsemgrep_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F44.semgrep_v",{"title":1514,"path":1513,"stem":2310},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F45.sonarqube-ccpp-plugin",{"title":2312,"path":2313,"stem":2314},"SonarQube C\u002FC++ Plugin_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsonarqube-ccpp-plugin_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F46.sonarqube-ccpp-plugin_v",{"title":2316,"path":2317,"stem":2318},"Splint","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsplint","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F47.splint",{"title":2320,"path":2321,"stem":2322},"Splint_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsplint_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F48.splint_v",{"title":2324,"path":2325,"stem":2326,"children":2327},"DD. Related Guidelines","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fdd-related-guidelines","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F5.dd-related-guidelines\u002F1.index",[2328,2329,2333],{"title":2324,"path":2325,"stem":2326},{"title":2330,"path":2331,"stem":2332},"2008","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fdd-related-guidelines\u002F2.2008","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F5.dd-related-guidelines\u002F2.2008",{"title":2334,"path":2335,"stem":2336},"MITRE CWE","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fdd-related-guidelines\u002Fmitre-cwe","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F5.dd-related-guidelines\u002F3.mitre-cwe",{"title":2338,"path":2339,"stem":2340},"EE. Risk Assessments","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fee-risk-assessments","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F6.ee-risk-assessments",{"title":2342,"path":2343,"stem":2344,"children":2345},"Admin","\u002Fsei-cert-cpp-coding-standard\u002Fadmin","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F1.index",[2346,2347],{"title":2342,"path":2343,"stem":2344},{"title":2348,"path":2349,"stem":2350},"TODO List","\u002Fsei-cert-cpp-coding-standard\u002Fadmin\u002Ftodo-list","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F2.todo-list",{"title":2352,"path":2353,"stem":2354},"Errata for SEI CERT C++ Coding Standard (2016 Edition)","\u002Fsei-cert-cpp-coding-standard\u002Ferrata-for-sei-cert-cpp-coding-standard-2016-edition","5.sei-cert-cpp-coding-standard\u002F6.errata-for-sei-cert-cpp-coding-standard-2016-edition",1791383610438]