[{"data":1,"prerenderedAt":1860},["ShallowReactive",2],{"global-navigation":3,"page-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon50-cpp":28,"surround-\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon50-cpp":1153,"sidebar-sei-cert-cpp-coding-standard":1161},[4,8],{"title":5,"path":6,"_path":6,"fromAppConfig":7},"Home","\u002F",true,{"title":9,"path":10,"children":11,"_path":27,"fromAppConfig":7},"Coding Standards","\u002Fcoding-standards\u002F",[12,15,18,21,24],{"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},"Java Coding Standard","\u002Fsei-cert-oracle-coding-standard-for-java\u002F",{"title":25,"path":26},"Perl Coding Standard","\u002Fsei-cert-perl-coding-standard\u002F","\u002Fcoding-standards",{"id":29,"title":30,"body":31,"description":1135,"extension":1136,"meta":1137,"navigation":7,"path":1149,"seo":1150,"stem":1151,"__hash__":1152},"content\u002F5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F2.con50-cpp.md","CON50-CPP. Do not destroy a mutex while it is locked",{"type":32,"value":33,"toc":1125},"minimark",[34,38,48,56,70,93,98,105,112,363,367,370,544,547,550,761,765,768,834,838,1006,1010,1024,1028,1070,1074,1097,1100,1121],[35,36,30],"h1",{"id":37},"con50-cpp-do-not-destroy-a-mutex-while-it-is-locked",[39,40,41,42,47],"p",{},"Mutex objects are used to protect shared data from being concurrently accessed. If a mutex object is destroyed while a thread is blocked waiting for the lock, ",[43,44,46],"a",{"href":45},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-criticalsections","critical sections"," and shared data are no longer protected.",[39,49,50,51,55],{},"The C++ Standard, [thread.mutex.class], paragraph 5 [ ",[43,52,54],{"href":53},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography#AA.Bibliography-ISO\u002FIEC14882-2014","ISO\u002FIEC 14882-2014"," ], states the following:",[57,58,59],"blockquote",{},[39,60,61,62,66,67,69],{},"The behavior of a program is undefined if it destroys a ",[63,64,65],"code",{},"mutex"," object owned by any thread or a thread terminates while owning a ",[63,68,65],{}," object.",[39,71,72,73,76,77,76,80,83,84,87,88,92],{},"Similar wording exists for ",[63,74,75],{},"std::recursive_mutex"," , ",[63,78,79],{},"std::timed_mutex",[63,81,82],{},"std::recursive_timed_mutex"," , and ",[63,85,86],{},"std::shared_timed_mutex"," . These statements imply that destroying a mutex object while a thread is waiting on it is ",[43,89,91],{"href":90},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-undefinedbehavior","undefined behavior"," .",[94,95,97],"h2",{"id":96},"noncompliant-code-example","Noncompliant Code Example",[39,99,100,101,104],{},"This noncompliant code example creates several threads that each invoke the ",[63,102,103],{},"do_work()"," function, passing a unique number as an ID.",[39,106,107,108,111],{},"Unfortunately, this code contains a race condition, allowing the mutex to be destroyed while it is still owned, because ",[63,109,110],{},"start_threads()"," may invoke the mutex's destructor before all of the threads have exited.",[113,114,116],"code-block",{"quality":115},"bad",[117,118,123],"pre",{"className":119,"code":120,"language":121,"meta":122,"style":122},"language-c shiki shiki-themes github-light github-dark monokai","#include \u003Cmutex>\n#include \u003Cthread>\n\nconst size_t maxThreads = 10;\n\nvoid do_work(size_t i, std::mutex *pm) {\n  std::lock_guard\u003Cstd::mutex> lk(*pm);\n\n  \u002F\u002F Access data protected by the lock.\n}\n\nvoid start_threads() {\n  std::thread threads[maxThreads];\n  std::mutex m;\n\n  for (size_t i = 0; i \u003C maxThreads; ++i) {\n    threads[i] = std::thread(do_work, i, &m);\n  }\n}\n","c","",[63,124,125,138,146,152,176,181,213,238,243,250,256,261,272,285,291,296,329,352,358],{"__ignoreMap":122},[126,127,130,134],"span",{"class":128,"line":129},"line",1,[126,131,133],{"class":132},"sC2Qs","#include",[126,135,137],{"class":136},"sstjo"," \u003Cmutex>\n",[126,139,141,143],{"class":128,"line":140},2,[126,142,133],{"class":132},[126,144,145],{"class":136}," \u003Cthread>\n",[126,147,149],{"class":128,"line":148},3,[126,150,151],{"emptyLinePlaceholder":7},"\n",[126,153,155,158,162,166,169,173],{"class":128,"line":154},4,[126,156,157],{"class":132},"const",[126,159,161],{"class":160},"sq6CD"," size_t",[126,163,165],{"class":164},"sMOD_"," maxThreads ",[126,167,168],{"class":132},"=",[126,170,172],{"class":171},"s7F3e"," 10",[126,174,175],{"class":164},";\n",[126,177,179],{"class":128,"line":178},5,[126,180,151],{"emptyLinePlaceholder":7},[126,182,184,187,191,194,197,201,204,207,210],{"class":128,"line":183},6,[126,185,186],{"class":160},"void",[126,188,190],{"class":189},"srTi1"," do_work",[126,192,193],{"class":164},"(",[126,195,196],{"class":160},"size_t",[126,198,200],{"class":199},"sTHNf"," i",[126,202,203],{"class":164},", std::mutex ",[126,205,206],{"class":132},"*",[126,208,209],{"class":199},"pm",[126,211,212],{"class":164},") {\n",[126,214,216,219,222,225,228,231,233,235],{"class":128,"line":215},7,[126,217,218],{"class":164},"  std::lock_guard",[126,220,221],{"class":132},"\u003C",[126,223,224],{"class":164},"std::mutex",[126,226,227],{"class":132},">",[126,229,230],{"class":189}," lk",[126,232,193],{"class":164},[126,234,206],{"class":132},[126,236,237],{"class":164},"pm);\n",[126,239,241],{"class":128,"line":240},8,[126,242,151],{"emptyLinePlaceholder":7},[126,244,246],{"class":128,"line":245},9,[126,247,249],{"class":248},"s8-w5","  \u002F\u002F Access data protected by the lock.\n",[126,251,253],{"class":128,"line":252},10,[126,254,255],{"class":164},"}\n",[126,257,259],{"class":128,"line":258},11,[126,260,151],{"emptyLinePlaceholder":7},[126,262,264,266,269],{"class":128,"line":263},12,[126,265,186],{"class":160},[126,267,268],{"class":189}," start_threads",[126,270,271],{"class":164},"() {\n",[126,273,275,278,282],{"class":128,"line":274},13,[126,276,277],{"class":164},"  std::thread ",[126,279,281],{"class":280},"sOrwc","threads",[126,283,284],{"class":164},"[maxThreads];\n",[126,286,288],{"class":128,"line":287},14,[126,289,290],{"class":164},"  std::mutex m;\n",[126,292,294],{"class":128,"line":293},15,[126,295,151],{"emptyLinePlaceholder":7},[126,297,299,302,305,307,310,312,315,318,320,323,326],{"class":128,"line":298},16,[126,300,301],{"class":132},"  for",[126,303,304],{"class":164}," (",[126,306,196],{"class":160},[126,308,309],{"class":164}," i ",[126,311,168],{"class":132},[126,313,314],{"class":171}," 0",[126,316,317],{"class":164},"; i ",[126,319,221],{"class":132},[126,321,322],{"class":164}," maxThreads; ",[126,324,325],{"class":132},"++",[126,327,328],{"class":164},"i) {\n",[126,330,332,335,338,340,343,346,349],{"class":128,"line":331},17,[126,333,334],{"class":280},"    threads",[126,336,337],{"class":164},"[i] ",[126,339,168],{"class":132},[126,341,342],{"class":189}," std::thread",[126,344,345],{"class":164},"(do_work, i, ",[126,347,348],{"class":132},"&",[126,350,351],{"class":164},"m);\n",[126,353,355],{"class":128,"line":354},18,[126,356,357],{"class":164},"  }\n",[126,359,361],{"class":128,"line":360},19,[126,362,255],{"class":164},[94,364,366],{"id":365},"compliant-solution","Compliant Solution",[39,368,369],{},"This compliant solution eliminates the race condition by extending the lifetime of the mutex.",[113,371,373],{"quality":372},"good",[117,374,376],{"className":119,"code":375,"language":121,"meta":122,"style":122},"#include \u003Cmutex>\n#include \u003Cthread>\n\nconst size_t maxThreads = 10;\n\nvoid do_work(size_t i, std::mutex *pm) {\n  std::lock_guard\u003Cstd::mutex> lk(*pm);\n\n  \u002F\u002F Access data protected by the lock.\n}\n\nstd::mutex m;\n\nvoid start_threads() {\n  std::thread threads[maxThreads];\n\n  for (size_t i = 0; i \u003C maxThreads; ++i) {\n    threads[i] = std::thread(do_work, i, &m);\n  }\n}\n",[63,377,378,384,390,394,408,412,432,450,454,458,462,466,471,475,483,491,495,519,535,539],{"__ignoreMap":122},[126,379,380,382],{"class":128,"line":129},[126,381,133],{"class":132},[126,383,137],{"class":136},[126,385,386,388],{"class":128,"line":140},[126,387,133],{"class":132},[126,389,145],{"class":136},[126,391,392],{"class":128,"line":148},[126,393,151],{"emptyLinePlaceholder":7},[126,395,396,398,400,402,404,406],{"class":128,"line":154},[126,397,157],{"class":132},[126,399,161],{"class":160},[126,401,165],{"class":164},[126,403,168],{"class":132},[126,405,172],{"class":171},[126,407,175],{"class":164},[126,409,410],{"class":128,"line":178},[126,411,151],{"emptyLinePlaceholder":7},[126,413,414,416,418,420,422,424,426,428,430],{"class":128,"line":183},[126,415,186],{"class":160},[126,417,190],{"class":189},[126,419,193],{"class":164},[126,421,196],{"class":160},[126,423,200],{"class":199},[126,425,203],{"class":164},[126,427,206],{"class":132},[126,429,209],{"class":199},[126,431,212],{"class":164},[126,433,434,436,438,440,442,444,446,448],{"class":128,"line":215},[126,435,218],{"class":164},[126,437,221],{"class":132},[126,439,224],{"class":164},[126,441,227],{"class":132},[126,443,230],{"class":189},[126,445,193],{"class":164},[126,447,206],{"class":132},[126,449,237],{"class":164},[126,451,452],{"class":128,"line":240},[126,453,151],{"emptyLinePlaceholder":7},[126,455,456],{"class":128,"line":245},[126,457,249],{"class":248},[126,459,460],{"class":128,"line":252},[126,461,255],{"class":164},[126,463,464],{"class":128,"line":258},[126,465,151],{"emptyLinePlaceholder":7},[126,467,468],{"class":128,"line":263},[126,469,470],{"class":164},"std::mutex m;\n",[126,472,473],{"class":128,"line":274},[126,474,151],{"emptyLinePlaceholder":7},[126,476,477,479,481],{"class":128,"line":287},[126,478,186],{"class":160},[126,480,268],{"class":189},[126,482,271],{"class":164},[126,484,485,487,489],{"class":128,"line":293},[126,486,277],{"class":164},[126,488,281],{"class":280},[126,490,284],{"class":164},[126,492,493],{"class":128,"line":298},[126,494,151],{"emptyLinePlaceholder":7},[126,496,497,499,501,503,505,507,509,511,513,515,517],{"class":128,"line":331},[126,498,301],{"class":132},[126,500,304],{"class":164},[126,502,196],{"class":160},[126,504,309],{"class":164},[126,506,168],{"class":132},[126,508,314],{"class":171},[126,510,317],{"class":164},[126,512,221],{"class":132},[126,514,322],{"class":164},[126,516,325],{"class":132},[126,518,328],{"class":164},[126,520,521,523,525,527,529,531,533],{"class":128,"line":354},[126,522,334],{"class":280},[126,524,337],{"class":164},[126,526,168],{"class":132},[126,528,342],{"class":189},[126,530,345],{"class":164},[126,532,348],{"class":132},[126,534,351],{"class":164},[126,536,537],{"class":128,"line":360},[126,538,357],{"class":164},[126,540,542],{"class":128,"line":541},20,[126,543,255],{"class":164},[94,545,366],{"id":546},"compliant-solution-1",[39,548,549],{},"This compliant solution eliminates the race condition by joining the threads before the mutex's destructor is invoked.",[113,551,552],{"quality":372},[117,553,555],{"className":119,"code":554,"language":121,"meta":122,"style":122},"#include \u003Cmutex>\n#include \u003Cthread>\n\nconst size_t maxThreads = 10;\n\nvoid do_work(size_t i, std::mutex *pm) {\n  std::lock_guard\u003Cstd::mutex> lk(*pm);\n\n  \u002F\u002F Access data protected by the lock.\n}\nvoid run_threads() {\n  std::thread threads[maxThreads];\n  std::mutex m;\n\n  for (size_t i = 0; i \u003C maxThreads; ++i) {\n    threads[i] = std::thread(do_work, i, &m);\n  }\n\n  for (size_t i = 0; i \u003C maxThreads; ++i) {\n    threads[i].join();\n  }\n}\n",[63,556,557,563,569,573,587,591,611,629,633,637,641,650,658,662,666,690,706,710,714,738,751,756],{"__ignoreMap":122},[126,558,559,561],{"class":128,"line":129},[126,560,133],{"class":132},[126,562,137],{"class":136},[126,564,565,567],{"class":128,"line":140},[126,566,133],{"class":132},[126,568,145],{"class":136},[126,570,571],{"class":128,"line":148},[126,572,151],{"emptyLinePlaceholder":7},[126,574,575,577,579,581,583,585],{"class":128,"line":154},[126,576,157],{"class":132},[126,578,161],{"class":160},[126,580,165],{"class":164},[126,582,168],{"class":132},[126,584,172],{"class":171},[126,586,175],{"class":164},[126,588,589],{"class":128,"line":178},[126,590,151],{"emptyLinePlaceholder":7},[126,592,593,595,597,599,601,603,605,607,609],{"class":128,"line":183},[126,594,186],{"class":160},[126,596,190],{"class":189},[126,598,193],{"class":164},[126,600,196],{"class":160},[126,602,200],{"class":199},[126,604,203],{"class":164},[126,606,206],{"class":132},[126,608,209],{"class":199},[126,610,212],{"class":164},[126,612,613,615,617,619,621,623,625,627],{"class":128,"line":215},[126,614,218],{"class":164},[126,616,221],{"class":132},[126,618,224],{"class":164},[126,620,227],{"class":132},[126,622,230],{"class":189},[126,624,193],{"class":164},[126,626,206],{"class":132},[126,628,237],{"class":164},[126,630,631],{"class":128,"line":240},[126,632,151],{"emptyLinePlaceholder":7},[126,634,635],{"class":128,"line":245},[126,636,249],{"class":248},[126,638,639],{"class":128,"line":252},[126,640,255],{"class":164},[126,642,643,645,648],{"class":128,"line":258},[126,644,186],{"class":160},[126,646,647],{"class":189}," run_threads",[126,649,271],{"class":164},[126,651,652,654,656],{"class":128,"line":263},[126,653,277],{"class":164},[126,655,281],{"class":280},[126,657,284],{"class":164},[126,659,660],{"class":128,"line":274},[126,661,290],{"class":164},[126,663,664],{"class":128,"line":287},[126,665,151],{"emptyLinePlaceholder":7},[126,667,668,670,672,674,676,678,680,682,684,686,688],{"class":128,"line":293},[126,669,301],{"class":132},[126,671,304],{"class":164},[126,673,196],{"class":160},[126,675,309],{"class":164},[126,677,168],{"class":132},[126,679,314],{"class":171},[126,681,317],{"class":164},[126,683,221],{"class":132},[126,685,322],{"class":164},[126,687,325],{"class":132},[126,689,328],{"class":164},[126,691,692,694,696,698,700,702,704],{"class":128,"line":298},[126,693,334],{"class":280},[126,695,337],{"class":164},[126,697,168],{"class":132},[126,699,342],{"class":189},[126,701,345],{"class":164},[126,703,348],{"class":132},[126,705,351],{"class":164},[126,707,708],{"class":128,"line":331},[126,709,357],{"class":164},[126,711,712],{"class":128,"line":354},[126,713,151],{"emptyLinePlaceholder":7},[126,715,716,718,720,722,724,726,728,730,732,734,736],{"class":128,"line":360},[126,717,301],{"class":132},[126,719,304],{"class":164},[126,721,196],{"class":160},[126,723,309],{"class":164},[126,725,168],{"class":132},[126,727,314],{"class":171},[126,729,317],{"class":164},[126,731,221],{"class":132},[126,733,322],{"class":164},[126,735,325],{"class":132},[126,737,328],{"class":164},[126,739,740,742,745,748],{"class":128,"line":541},[126,741,334],{"class":280},[126,743,744],{"class":164},"[i].",[126,746,747],{"class":189},"join",[126,749,750],{"class":164},"();\n",[126,752,754],{"class":128,"line":753},21,[126,755,357],{"class":164},[126,757,759],{"class":128,"line":758},22,[126,760,255],{"class":164},[94,762,764],{"id":763},"risk-assessment","Risk Assessment",[39,766,767],{},"Destroying a mutex while it is locked may result in invalid control flow and data corruption.",[769,770,771,772,771,802],"table",{},"\n  ",[773,774,775,776,771],"thead",{},"\n    ",[777,778,779,780,779,784,779,787,779,790,779,793,779,796,779,799,775],"tr",{},"\n      ",[781,782,783],"th",{},"Rule",[781,785,786],{},"Severity",[781,788,789],{},"Likelihood",[781,791,792],{},"Detectable",[781,794,795],{},"Repairable",[781,797,798],{},"Priority",[781,800,801],{},"Level",[803,804,775,805,771],"tbody",{},[777,806,779,807,779,811,779,814,779,817,779,820,779,822,779,829,775],{},[808,809,810],"td",{},"CON50-CPP",[808,812,813],{},"Medium",[808,815,816],{},"Probable",[808,818,819],{},"No",[808,821,819],{},[808,823,825],{"style":824},"color: #27ae60;",[826,827,828],"b",{},"P4",[808,830,831],{"style":824},[826,832,833],{},"L3",[94,835,837],{"id":836},"automated-detection","Automated Detection",[769,839,842,868],{"className":840},[841],"wrapped",[773,843,844],{},[777,845,848,853,858,863],{"className":846},[847],"header",[781,849,850],{},[39,851,852],{},"Tool",[781,854,855],{},[39,856,857],{},"Version",[781,859,860],{},[39,861,862],{},"Checker",[781,864,865],{},[39,866,867],{},"Description",[803,869,870,903,931,954,980],{},[777,871,874,880,890,898],{"className":872},[873],"odd",[808,875,876],{},[43,877,879],{"href":878},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fcodesonar","CodeSonar",[808,881,882],{},[883,884,887],"div",{"className":885},[886],"content-wrapper",[39,888,889],{},"9.1p0",[808,891,892],{},[39,893,894],{},[895,896,897],"strong",{},"CONCURRENCY.LOCALARG",[808,899,900],{},[39,901,902],{},"Local Variable Passed to Thread",[777,904,907,913,921,926],{"className":905},[906],"even",[808,908,909],{},[43,910,912],{"href":911},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fhelix-qac","Helix QAC",[808,914,915],{},[883,916,918],{"className":917},[886],[39,919,920],{},"2025.2",[808,922,923],{},[895,924,925],{},"DF961, DF4962",[808,927,928],{},[929,930],"br",{},[777,932,934,940,945,950],{"className":933},[873],[808,935,936],{},[43,937,939],{"href":938},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fklocwork","Klocwork",[808,941,942],{},[883,943,920],{"className":944},[886],[808,946,947],{},[895,948,949],{},"CERT.CONC.MUTEX.DESTROY_WHILE_LOCKED",[808,951,952],{},[929,953],{},[777,955,957,963,970,975],{"className":956},[906],[808,958,959],{},[43,960,962],{"href":961},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fparasoft","Parasoft C\u002FC++test",[808,964,965],{},[883,966,968],{"className":967},[886],[39,969,920],{},[808,971,972],{},[895,973,974],{},"CERT_CPP-CON50-a",[808,976,977],{},[39,978,979],{},"Do not destroy another thread's mutex",[777,981,983,989,997,1003],{"className":982},[873],[808,984,985],{},[43,986,988],{"href":987},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpolyspace-bug-finder","Polyspace Bug Finder",[808,990,991],{},[883,992,994],{"className":993},[886],[39,995,996],{},"R2025b",[808,998,999],{},[43,1000,1002],{"href":1001},"https:\u002F\u002Fwww.mathworks.com\u002Fhelp\u002Fbugfinder\u002Fref\u002Fcertccon50cpp.html","CERT C++: CON50-CPP",[808,1004,1005],{},"Checks for destruction of locked mutex (rule partially covered)",[94,1007,1009],{"id":1008},"related-vulnerabilities","Related Vulnerabilities",[39,1011,1012,1013,1017,1018,92],{},"Search for ",[43,1014,1016],{"href":1015},"\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions#BB.Definitions-vulnerability","vulnerabilities"," resulting from the violation of this rule on the ",[43,1019,1023],{"href":1020,"rel":1021},"https:\u002F\u002Fwww.kb.cert.org\u002Fvulnotes\u002Fbymetric?searchview&query=FIELD+KEYWORDS+contains+CON50-CPP",[1022],"nofollow","CERT website",[94,1025,1027],{"id":1026},"related-guidelines","Related Guidelines",[769,1029,1030,1038],{},[773,1031,1032],{},[777,1033,1034,1036],{},[781,1035],{},[781,1037],{},[803,1039,1040,1057],{},[777,1041,1042,1049],{},[808,1043,1044],{},[43,1045,1048],{"href":1046,"rel":1047},"http:\u002F\u002Fcwe.mitre.org\u002F",[1022],"MITRE CWE",[808,1050,1051,1056],{},[43,1052,1055],{"href":1053,"rel":1054},"http:\u002F\u002Fcwe.mitre.org\u002Fdata\u002Fdefinitions\u002F667.html",[1022],"CWE-667"," , Improper Locking",[777,1058,1059,1064],{},[808,1060,1061],{},[43,1062,1063],{"href":17},"SEI CERT C Coding Standard",[808,1065,1066],{},[43,1067,1069],{"href":1068},"\u002Fsei-cert-c-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon31-c","CON31-C. Do not destroy a mutex while it is locked",[94,1071,1073],{"id":1072},"bibliography","Bibliography",[769,1075,1076,1084],{},[773,1077,1078],{},[777,1079,1080,1082],{},[781,1081],{},[781,1083],{},[803,1085,1086],{},[777,1087,1088,1094],{},[808,1089,1090,1091,1093],{},"[ ",[43,1092,54],{"href":53}," ]",[808,1095,1096],{},"Subclause 30.4.1, \"Mutex Requirements\"",[1098,1099],"hr",{},[39,1101,1102,1109,1110,1109,1115],{},[43,1103,1105],{"href":1104},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002F",[1106,1107],"img",{"src":1108},"\u002Fattachments\u002F87152044\u002F88034188.png"," ",[43,1111,1112],{"href":1104},[1106,1113],{"src":1114},"\u002Fattachments\u002F87152044\u002F88034190.png",[43,1116,1118],{"href":1117},"\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon51-cpp",[1106,1119],{"src":1120},"\u002Fattachments\u002F87152044\u002F88034189.png",[1122,1123,1124],"style",{},"html pre.shiki code .sC2Qs, html code.shiki .sC2Qs{--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672}html pre.shiki code .sstjo, html code.shiki .sstjo{--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}html pre.shiki code .sq6CD, html code.shiki .sq6CD{--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .sMOD_, html code.shiki .sMOD_{--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .s7F3e, html code.shiki .s7F3e{--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}html pre.shiki code .srTi1, html code.shiki .srTi1{--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}html pre.shiki code .sTHNf, html code.shiki .sTHNf{--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit;--shiki-sepia:#FD971F;--shiki-sepia-font-style:italic}html pre.shiki code .s8-w5, html code.shiki .s8-w5{--shiki-default:#6A737D;--shiki-dark:#6A737D;--shiki-sepia:#88846F}html pre.shiki code .sOrwc, html code.shiki .sOrwc{--shiki-default:#E36209;--shiki-dark:#FFAB70;--shiki-sepia:#F8F8F2}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);}",{"title":122,"searchDepth":140,"depth":140,"links":1126},[1127,1128,1129,1130,1131,1132,1133,1134],{"id":96,"depth":140,"text":97},{"id":365,"depth":140,"text":366},{"id":546,"depth":140,"text":366},{"id":763,"depth":140,"text":764},{"id":836,"depth":140,"text":837},{"id":1008,"depth":140,"text":1009},{"id":1026,"depth":140,"text":1027},{"id":1072,"depth":140,"text":1073},"Mutex objects are used to protect shared data from being concurrently accessed. If a mutex object is destroyed while a thread is blocked waiting for the lock, critical sections and shared data are no longer protected.","md",{"tags":1138},[1139,1140,1141,1142,1143,1144,1145,1146,1147,1148],"nptc-thread","review-dms","concurrency","rule","cwe-667","review-ajb","android-unknown","no-autodetect","nptc","con","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con\u002Fcon50-cpp",{"title":30,"description":1135},"5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F2.con50-cpp","GE7Zq3WZK4oMHR01bDxvu9n8lKWr_1GVyyGDWaVwEEo",[1154,1158],{"title":1155,"path":1156,"stem":1157,"children":-1},"Concurrency (CON)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fconcurrency-con","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F1.index",{"title":1159,"path":1117,"stem":1160,"children":-1},"CON51-CPP. Ensure actively held locks are released on exceptional conditions","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F03.concurrency-con\u002F3.con51-cpp",[1162],{"title":1163,"path":1164,"stem":1165,"children":1166},"SEI CERT C++ Coding Standard","\u002Fsei-cert-cpp-coding-standard","5.sei-cert-cpp-coding-standard\u002F1.index",[1167,1168,1235,1630,1846,1856],{"title":1163,"path":1164,"stem":1165},{"title":1169,"path":1170,"stem":1171,"children":1172},"Front Matter","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F1.index",[1173,1174],{"title":1169,"path":1170,"stem":1171},{"title":1175,"path":1176,"stem":1177,"children":1178},"Introduction","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F01.index",[1179,1180,1184,1188,1192,1196,1200,1204,1208,1212,1216,1220,1224,1228,1232],{"title":1175,"path":1176,"stem":1177},{"title":1181,"path":1182,"stem":1183},"Scope","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fscope","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F02.scope",{"title":1185,"path":1186,"stem":1187},"Audience","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Faudience","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F03.audience",{"title":1189,"path":1190,"stem":1191},"Usage","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fusage","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F04.usage",{"title":1193,"path":1194,"stem":1195},"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":1197,"path":1198,"stem":1199},"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":1201,"path":1202,"stem":1203},"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":1205,"path":1206,"stem":1207},"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":1209,"path":1210,"stem":1211},"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":1213,"path":1214,"stem":1215},"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":1217,"path":1218,"stem":1219},"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":1221,"path":1222,"stem":1223},"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":1225,"path":1226,"stem":1227},"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":1229,"path":1230,"stem":1231},"Acknowledgments","\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Facknowledgments","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F14.acknowledgments",{"title":837,"path":1233,"stem":1234},"\u002Fsei-cert-cpp-coding-standard\u002Ffront-matter\u002Fintroduction\u002Fautomated-detection","5.sei-cert-cpp-coding-standard\u002F2.front-matter\u002F2.introduction\u002F15.automated-detection",{"title":1236,"path":1237,"stem":1238,"children":1239},"Rules","\u002Fsei-cert-cpp-coding-standard\u002Frules","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F01.index",[1240,1241,1263,1288,1330,1380,1438,1500,1514,1524,1562,1588],{"title":1236,"path":1237,"stem":1238},{"title":1242,"path":1243,"stem":1244,"children":1245},"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",[1246,1247,1251,1255,1259],{"title":1242,"path":1243,"stem":1244},{"title":1248,"path":1249,"stem":1250},"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":1252,"path":1253,"stem":1254},"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":1256,"path":1257,"stem":1258},"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":1260,"path":1261,"stem":1262},"string from a null pointer","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcharacters-and-strings-str\u002Fstring-from-a-null-pointer","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F02.characters-and-strings-str\u002F5.string-from-a-null-pointer",{"title":1155,"path":1156,"stem":1157,"children":1264},[1265,1266,1267,1268,1272,1276,1280,1284],{"title":1155,"path":1156,"stem":1157},{"title":30,"path":1149,"stem":1151},{"title":1159,"path":1117,"stem":1160},{"title":1269,"path":1270,"stem":1271},"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":1273,"path":1274,"stem":1275},"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":1277,"path":1278,"stem":1279},"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":1281,"path":1282,"stem":1283},"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":1285,"path":1286,"stem":1287},"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":1289,"path":1290,"stem":1291,"children":1292},"Containers (CTR)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fcontainers-ctr","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F04.containers-ctr\u002F01.index",[1293,1294,1298,1302,1306,1310,1314,1318,1322,1326],{"title":1289,"path":1290,"stem":1291},{"title":1295,"path":1296,"stem":1297},"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":1299,"path":1300,"stem":1301},"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":1303,"path":1304,"stem":1305},"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":1307,"path":1308,"stem":1309},"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":1311,"path":1312,"stem":1313},"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":1315,"path":1316,"stem":1317},"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":1319,"path":1320,"stem":1321},"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":1323,"path":1324,"stem":1325},"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":1327,"path":1328,"stem":1329},"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":1331,"path":1332,"stem":1333,"children":1334},"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",[1335,1336,1340,1344,1348,1352,1356,1360,1364,1368,1372,1376],{"title":1331,"path":1332,"stem":1333},{"title":1337,"path":1338,"stem":1339},"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":1341,"path":1342,"stem":1343},"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":1345,"path":1346,"stem":1347},"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":1349,"path":1350,"stem":1351},"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":1353,"path":1354,"stem":1355},"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":1357,"path":1358,"stem":1359},"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":1361,"path":1362,"stem":1363},"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":1365,"path":1366,"stem":1367},"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":1369,"path":1370,"stem":1371},"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":1373,"path":1374,"stem":1375},"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":1377,"path":1378,"stem":1379},"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":1381,"path":1382,"stem":1383,"children":1384},"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",[1385,1386,1390,1394,1398,1402,1406,1410,1414,1418,1422,1426,1430,1434],{"title":1381,"path":1382,"stem":1383},{"title":1387,"path":1388,"stem":1389},"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":1391,"path":1392,"stem":1393},"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":1395,"path":1396,"stem":1397},"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":1399,"path":1400,"stem":1401},"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":1403,"path":1404,"stem":1405},"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":1407,"path":1408,"stem":1409},"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":1411,"path":1412,"stem":1413},"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":1415,"path":1416,"stem":1417},"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":1419,"path":1420,"stem":1421},"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":1423,"path":1424,"stem":1425},"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":1427,"path":1428,"stem":1429},"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":1431,"path":1432,"stem":1433},"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":1435,"path":1436,"stem":1437},"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":1439,"path":1440,"stem":1441,"children":1442},"Expressions (EXP)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F01.index",[1443,1444,1448,1452,1456,1460,1464,1468,1472,1476,1480,1484,1488,1492,1496],{"title":1439,"path":1440,"stem":1441},{"title":1445,"path":1446,"stem":1447},"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":1449,"path":1450,"stem":1451},"EXP51-CPP. Do not delete an array through a pointer of the incorrect type","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fexpressions-exp\u002Fexp51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F07.expressions-exp\u002F03.exp51-cpp",{"title":1453,"path":1454,"stem":1455},"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":1457,"path":1458,"stem":1459},"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":1461,"path":1462,"stem":1463},"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":1465,"path":1466,"stem":1467},"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":1469,"path":1470,"stem":1471},"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":1473,"path":1474,"stem":1475},"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":1477,"path":1478,"stem":1479},"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":1481,"path":1482,"stem":1483},"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":1485,"path":1486,"stem":1487},"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":1489,"path":1490,"stem":1491},"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":1493,"path":1494,"stem":1495},"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":1497,"path":1498,"stem":1499},"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":1501,"path":1502,"stem":1503,"children":1504},"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",[1505,1506,1510],{"title":1501,"path":1502,"stem":1503},{"title":1507,"path":1508,"stem":1509},"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":1511,"path":1512,"stem":1513},"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":1515,"path":1516,"stem":1517,"children":1518},"Integers (INT)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fintegers-int","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F09.integers-int\u002F1.index",[1519,1520],{"title":1515,"path":1516,"stem":1517},{"title":1521,"path":1522,"stem":1523},"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":1525,"path":1526,"stem":1527,"children":1528},"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",[1529,1530,1534,1538,1542,1546,1550,1554,1558],{"title":1525,"path":1526,"stem":1527},{"title":1531,"path":1532,"stem":1533},"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":1535,"path":1536,"stem":1537},"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":1539,"path":1540,"stem":1541},"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":1543,"path":1544,"stem":1545},"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":1547,"path":1548,"stem":1549},"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":1551,"path":1552,"stem":1553},"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":1555,"path":1556,"stem":1557},"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":1559,"path":1560,"stem":1561},"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":1563,"path":1564,"stem":1565,"children":1566},"Miscellaneous (MSC)","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F1.index",[1567,1568,1572,1576,1580,1584],{"title":1563,"path":1564,"stem":1565},{"title":1569,"path":1570,"stem":1571},"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":1573,"path":1574,"stem":1575},"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":1577,"path":1578,"stem":1579},"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":1581,"path":1582,"stem":1583},"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":1585,"path":1586,"stem":1587},"rand() for generating pseudorandom numbers","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fmiscellaneous-msc\u002Frand-for-generating-pseudorandom-numbers","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F11.miscellaneous-msc\u002F6.rand-for-generating-pseudorandom-numbers",{"title":1589,"path":1590,"stem":1591,"children":1592},"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",[1593,1594,1598,1602,1606,1610,1614,1618,1622,1626],{"title":1589,"path":1590,"stem":1591},{"title":1595,"path":1596,"stem":1597},"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":1599,"path":1600,"stem":1601},"OOP51-CPP. Do not slice derived objects","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop51-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F03.oop51-cpp",{"title":1603,"path":1604,"stem":1605},"OOP52-CPP. Do not delete a polymorphic object without a virtual destructor","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop52-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F04.oop52-cpp",{"title":1607,"path":1608,"stem":1609},"OOP53-CPP. Write constructor member initializers in the canonical order","\u002Fsei-cert-cpp-coding-standard\u002Frules\u002Fobject-oriented-programming-oop\u002Foop53-cpp","5.sei-cert-cpp-coding-standard\u002F3.rules\u002F12.object-oriented-programming-oop\u002F05.oop53-cpp",{"title":1611,"path":1612,"stem":1613},"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":1615,"path":1616,"stem":1617},"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":1619,"path":1620,"stem":1621},"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":1623,"path":1624,"stem":1625},"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":1627,"path":1628,"stem":1629},"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":1631,"path":1632,"stem":1633,"children":1634},"Back Matter","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F1.index",[1635,1636,1640,1644,1829,1842],{"title":1631,"path":1632,"stem":1633},{"title":1637,"path":1638,"stem":1639},"AA. Bibliography","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Faa-bibliography","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F2.aa-bibliography",{"title":1641,"path":1642,"stem":1643},"BB. Definitions","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fbb-definitions","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F3.bb-definitions",{"title":1645,"path":1646,"stem":1647,"children":1648},"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",[1649,1650,1654,1658,1662,1666,1670,1674,1678,1682,1686,1690,1694,1696,1700,1704,1708,1712,1716,1720,1724,1728,1732,1734,1738,1740,1744,1748,1752,1755,1759,1761,1765,1769,1773,1777,1781,1785,1789,1793,1797,1801,1805,1809,1813,1817,1821,1825],{"title":1645,"path":1646,"stem":1647},{"title":1651,"path":1652,"stem":1653},"Astrée","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fastree","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F02.astree",{"title":1655,"path":1656,"stem":1657},"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":1659,"path":1660,"stem":1661},"Axivion Bauhaus Suite","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Faxivion-bauhaus-suite","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F04.axivion-bauhaus-suite",{"title":1663,"path":1664,"stem":1665},"Axivion Bauhaus Suite_V","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Faxivion-bauhaus-suite_v","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F05.axivion-bauhaus-suite_v",{"title":1667,"path":1668,"stem":1669},"Clang","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fclang","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F06.clang",{"title":1671,"path":1672,"stem":1673},"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":1675,"path":1676,"stem":1677},"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":1679,"path":1680,"stem":1681},"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":1683,"path":1684,"stem":1685},"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":1687,"path":1688,"stem":1689},"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":1691,"path":1692,"stem":1693},"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":879,"path":878,"stem":1695},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F13.codesonar",{"title":1697,"path":1698,"stem":1699},"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":1701,"path":1702,"stem":1703},"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":1705,"path":1706,"stem":1707},"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":1709,"path":1710,"stem":1711},"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":1713,"path":1714,"stem":1715},"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":1717,"path":1718,"stem":1719},"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":1721,"path":1722,"stem":1723},"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":1725,"path":1726,"stem":1727},"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":1729,"path":1730,"stem":1731},"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":912,"path":911,"stem":1733},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F23.helix-qac",{"title":1735,"path":1736,"stem":1737},"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":939,"path":938,"stem":1739},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F25.klocwork",{"title":1741,"path":1742,"stem":1743},"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":1745,"path":1746,"stem":1747},"LDRA","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fldra","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F27.ldra",{"title":1749,"path":1750,"stem":1751},"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":1753,"path":961,"stem":1754},"Parasoft","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F29.parasoft",{"title":1756,"path":1757,"stem":1758},"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":988,"path":987,"stem":1760},"5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F31.polyspace-bug-finder",{"title":1762,"path":1763,"stem":1764},"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":1766,"path":1767,"stem":1768},"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":1770,"path":1771,"stem":1772},"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":1774,"path":1775,"stem":1776},"PVS-Studio","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fpvs-studio","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F35.pvs-studio",{"title":1778,"path":1779,"stem":1780},"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":1782,"path":1783,"stem":1784},"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":1786,"path":1787,"stem":1788},"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":1790,"path":1791,"stem":1792},"RuleChecker","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Frulechecker","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F39.rulechecker",{"title":1794,"path":1795,"stem":1796},"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":1798,"path":1799,"stem":1800},"Security Reviewer - Static Reviewer","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsecurity-reviewer-static-reviewer","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F41.security-reviewer-static-reviewer",{"title":1802,"path":1803,"stem":1804},"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":1806,"path":1807,"stem":1808},"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":1810,"path":1811,"stem":1812},"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":1814,"path":1815,"stem":1816},"SonarQube C\u002FC++ Plugin","\u002Fsei-cert-cpp-coding-standard\u002Fback-matter\u002Fcc-analyzers\u002Fsonarqube-ccpp-plugin","5.sei-cert-cpp-coding-standard\u002F4.back-matter\u002F4.cc-analyzers\u002F45.sonarqube-ccpp-plugin",{"title":1818,"path":1819,"stem":1820},"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":1822,"path":1823,"stem":1824},"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":1826,"path":1827,"stem":1828},"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":1830,"path":1831,"stem":1832,"children":1833},"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",[1834,1835,1839],{"title":1830,"path":1831,"stem":1832},{"title":1836,"path":1837,"stem":1838},"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":1048,"path":1840,"stem":1841},"\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":1843,"path":1844,"stem":1845},"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":1847,"path":1848,"stem":1849,"children":1850},"Admin","\u002Fsei-cert-cpp-coding-standard\u002Fadmin","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F1.index",[1851,1852],{"title":1847,"path":1848,"stem":1849},{"title":1853,"path":1854,"stem":1855},"TODO List","\u002Fsei-cert-cpp-coding-standard\u002Fadmin\u002Ftodo-list","5.sei-cert-cpp-coding-standard\u002F5.admin\u002F2.todo-list",{"title":1857,"path":1858,"stem":1859},"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",1775657778730]