
рд╣рдо рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдмреВрд╕реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рдерд╛ рдХрд┐ рд╕рддреНрдпрд╛рдкрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдВрдЧреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрдЪреНрдЫрд╛ рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реБрдИред рджреЛ рдмрд╛рд░ рд╣рдордиреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЙрд▓ рдХреЛ PVS-Studio.exe рдХреЙрд▓ рд╕реЗ рдХреИрд╕реЗ рдмрджрд▓рд╛ рдЬрд╛рдПред рдЕрдм рд╣рдо рдирдП рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рд▓реИрд╕ рдереЗ, рдФрд░ рддреАрд╕рд░рд╛ рдкреНрд░рдпрд╛рд╕ рд╕рдлрд▓ рд░рд╣рд╛ред рддреЛ, рдХреНрдпрд╛ рдмреВрд╕реНрдЯ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдвреВрдВрдврдирд╛ рд╕рдВрднрд╡ рд╣реИ?
рдмрдврд╝рд╛рд╡рд╛
рдмреВрд╕реНрдЯ рдлреНрд░реАрд╡реЗрдпрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ рдЬреЛ C ++ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╕реА ++ рдорд╛рдирдХ рдХреЛ рдЕрдкрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рдереА, рдЬрдм рдХрдИ рд▓реЛрдЧ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдирд╛рдЦреБрд╢ рдереЗ рдХрд┐ рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдорд╛рдирдХ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ "рдкрд░реАрдХреНрд╖рдг рдЧреНрд░рд╛рдЙрдВрдб" рд╣реИ, рдФрд░ рдХреБрдЫ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд C ++ рдорд╛рдирдХреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реИрдВред рд╕рдВрджрд░реНрдн:
рдмреВрд╕реНрдЯ рдПрдХ "рднрд╛рд░реА" рдХреЛрдб рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЬрдЯрд┐рд▓ рдкреИрдЯрд░реНрди рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреБрдЫ рдорд╛рдпрдиреЛрдВ рдореЗрдВ рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рд╛ рд╣реИред рдЕрдХреНрд╕рд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрдзреБрдирд┐рдХ рдмреВрд╕реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдХреЗрд╡рд▓ рднрд╛рдЧ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдореЗрдВ рдХреЛрдб рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рдЪрд░рдо рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЦреБрдж рдХреЛ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдбрд┐рдЬрд╛рдЗрди рдХреЛ рдЪреБрдкрдЪрд╛рдк рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИред рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдЦреБрдж рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЧрдпрд╛ред
рдореБрдЭреЗ рдЖрдкрдХреЛ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВред
рдпрджрд┐ Visual Studio рдпрд╛ Embarcadero C ++ рдмрд┐рд▓реНрдбрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реАрдзреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╕реНрдХреИрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдореЛрдб рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА (рдЬреИрд╕реЗ рдХреНрд░реВрдЬрд╝ рдХрдВрдЯреНрд░реЛрд▓, рдбреНрд░реЗрдХреЛ.рдиреЗрдЯ, рдпрд╛ рдЯреАрдо рдлрд╛рдЙрдВрдбреЗрд╢рди рдмрд┐рд▓реНрдб) рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред
рдпрд╣ рдореЛрдб рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░
рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдкрд░,
рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВред
рдпрджрд┐ рдХреЛрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИ (рдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рдкреНрд░рдЪреНрдЫрдиреНрди рдореЗрдХрдлрд╛рдЗрд▓ рд╣реИ)
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ (рдпрд╛ рдЗрд╕рдХреЗ рд╕рд╛рде) рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдмрд┐рд▓реНрдб рдореЛрдб рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдлрд╝рд╛рдЗрд▓ рднреА рджреЗрддрд╛ рд╣реИред рдЖрд╡рд╢реНрдпрдХ
рдЬрд╛рджреВ рдордВрддреНрд░ рднреА рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд
рд╣реИрдВ ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрд╛рджреВрдЧрд░ рдХреЛ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдореИрдиреБрдЕрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдПрдХ рднреА рдЪрд░рд┐рддреНрд░ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдерд╛ рдХрд┐ рд╣рдореЗрдВ рдмреВрд╕реНрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рдпрд╣ рдЕрдлрд╝рд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ, рд╣рдо рдЕрдкрд░реНрдпрд╛рдкреНрдд рд╕реНрддрд░ рдХреЗ рдпрд╛ рд╕рд┐рд░реНрдл рдЖрд▓рд╕реА рдереЗред рдореИрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдХрдВрд╕реЛрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрд╛ред
рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛
рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧреА рдиреЗ рд╣рд╛рд▓рд┐рдпрд╛ рд▓реЗрдЦ "
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдЧреБрдкреНрдд рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдХреЗ рддрд╣рдЦрд╛рдиреЗ рд╕реЗ " рдЗрд╕ рдирдП рдореЛрдб рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ
рдХрд┐рдпрд╛ ред рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдмрд╕
рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕реНрдб * .i рдлрд╛рдЗрд▓реЗрдВ рдкреНрд░рд╛рдкреНрдд
рдХрд░реЗрдВ ред рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдпрд╣реА рд╣рдордиреЗ рдХрд┐рдпрд╛ред
рдлрд┐рд░, рдирдП рдЯреВрд▓ (рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди) рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдордиреЗ рд╕рднреА * .i рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд┐рдд рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХреАред рдЙрд╕реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдб рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рдЙрдкрдХрд░рдг рдХреЛ рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рддрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВрдЧреЗред рд╢рд╛рдпрдж рдпрд╣ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ 5.10 рдореЗрдВ рд╣реЛрдЧрд╛ред
рд╢рд╛рд╕рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж, рдЬреЛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рд╕рдкрдиреЗ рджреЗрдЦрддреЗ рд╣реИрдВ
рд╣рдо рдзреАрд░реЗ-рдзреАрд░реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреНрд░рд┐рдпрд╛рдУрдВ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреЗ рд▓рдЧреЗ рд╣реИрдВред рдпрд╣ рдореЛрдб рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдЯреВрд▓ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрдЧрд╛ред рд╕рднреА рд╕рдВрдХрд▓рдХ рд▓реЙрдиреНрдЪреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреА рдЬрд╛рдПрдЧреА рдФрд░ рдЗрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рдмрд┐рдпрд╛рдБ рдПрдХрддреНрд░ рдХреА рдЬрд╛рдПрдВрдЧреАред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдг рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдВрдЧреЗред рдЖрджреЗрд╢ - "рдШрдбрд╝реАред" рдХрд┐рд╕реА рднреА рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП - "рддреИрдпрд╛рд░ред" рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЕрдм рдХреИрд╕реЗ рдЬрд╛рдВрдЪрдирд╛ рд╣реИред рдмреЗрд╢рдХ, рдпрджрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрд░рдЪрдирд╛ рдпрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ рд╣реЛрдЧрд╛ред рдареАрдХ рд╣реИ, рд╕рдкрдирд╛ рджреЗрдЦ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЕрдм рдмреВрд╕реНрдЯ рдкрд░реАрдХреНрд╖рдг рдкрд░ рд╡рд╛рдкрд╕ред
рдирд┐рд░рд╛рд╢рд╛ рдХреА рднрд╛рд╡рдирд╛
рдореИрдВ рддреИрдпрд╛рд░ рдерд╛ рдХрд┐ рдореИрдВ рдмреВрд╕реНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддрд╛ред рдЗрд╕ рджреБ: рдЦрдж рдзрд╛рд░рдгрд╛ рдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╕рд░ рдерд╛ред
рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рдВрдХрд▓рдХ рдФрд░ рдЙрдкрдХрд░рдг
рдмреВрд╕реНрдЯ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреБрдЫ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ, рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗред рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдзреНрдпрдпрди рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдмреВрд╕реНрдЯ рд╡рд┐рдЬреБрдЕрд▓ рд╕реА ++, рдЗрдВрдЯреЗрд▓ рд╕реА ++, рд╕рди рд╕реНрдЯреВрдбрд┐рдпреЛ, рдХреЙрдореНрдкреИрдХ рд╕реА ++, рдЬреАрд╕реАрд╕реА, рдХреНрд▓реИрдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдлреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрдирд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдХрд▓рдХ рдХреА рдЕрдкрдиреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрдХреНрд╖рдорддрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВред рдФрд░ рдЙрдирдХреЗ рдХреБрд▓ рдЙрдкрдпреЛрдЧ рдХреЛ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓рд╛ рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рд╕рдВрдХрд▓рдХ рдХреЛ рддреНрд░реБрдЯрд┐ рдП, рджреВрд╕рд░реА рддреНрд░реБрдЯрд┐ рдмреА, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдорд┐рд▓реЗрдЧреАред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреВрд╕реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╡рд┐рднрд┐рдиреНрди рдЯреВрд▓реНрд╕ рдФрд░ рд╕реНрдЯреИрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдЧреНрд░рд╛рдЙрдВрдб рд╣реИред рдЪреВрдВрдХрд┐ рдмреВрд╕реНрдЯ рд╕реА ++ рднрд╛рд╖рд╛ рдХреА рд╡рд┐рднрд┐рдиреНрди рдЖрдзреБрдирд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЬрд╛рдирдирд╛ рд╣рдореЗрд╢рд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЯреВрд▓ рдРрд╕реЗ рдХреЛрдб рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдпрд╛ рдирд╣реАрдВред рдирддреАрдЬрддрди, рдмреВрд╕реНрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдХреНрд░реЙрд╕-рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрддрдиреЗ рд╕рд╛рд░реЗ рд╕рдВрдХрд▓рдХ рдФрд░ рдЕрдиреНрдп рдЙрдкрдХрд░рдг рдХреЗ рдмрд╛рдж рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдЯрд╛рдЗрдкреЛрд╕ рдХреА рддрд▓рд╛рд╢ рдХрд░рдирд╛ рд▓рдЧрднрдЧ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИред
рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
рдмреВрд╕реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╕рдордп рдореЗрдВ, рд╣рдо рдЦреБрдж рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ (рддрдм рд╡реАрд╡реЛ 664) рдореЗрдВ рдмреВрд╕реНрдЯ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рдереЗред рд╣рдордиреЗ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде, рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдЫреЛрдЯреА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдПред рддрдм рд╣рдореЗрдВ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдореГрдд рдЕрдВрдд рдерд╛, рдФрд░ рд╡реЗ рдзреАрд░реЗ-рдзреАрд░реЗ рдХреЛрдб рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЧрдПред рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдХрд╛рд░рдг рд╕рд┐рд░реНрдл рдмреВрд╕реНрдЯ рдХреЛ рд▓реЗ рдЬрд╛рдирд╛ рд╕рдВрджрд┐рдЧреНрдз рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреБрдЫ рдЕрдкреНрд░рд┐рдп рдХрдорд┐рдпрд╛рдБ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдореЗрдВ '#' рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрд╣ рдЪрд░рд┐рддреНрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмреВрд╕реНрдЯ рдиреЗ рдЬрдбрд╝ рдирд╣реАрдВ рд▓реА, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред
рдЪреВрдВрдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреНрд╡рд╛рд░рд╛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╢реАрдШреНрд░ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХреЗрд╡рд▓ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдпрд╛ рд╡рд┐рджреЗрд╢реА рдЙрдк-рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рд░рд╣ рд╕рдХрддреА рд╣реИрдВ рдЬрд┐рдирдХреЗ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВред
рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕
рдмреВрд╕реНрдЯ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреНрд▓рд╛рд╕ рд╣реИрдВред рдЬрдм рддрдХ рд╡реЗ рддреНрд╡рд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ, рддрдм рддрдХ рдЙрдирдХрд╛ рд╕рддреНрдпрд╛рдкрди рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЬреБрдЕрд▓ C ++ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреНрд▓рд╛рд╕реЗрд╕ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдПрдХ рдЕрдкреНрд░рдпреБрдХреНрдд рд╡рд░реНрдЧ рдореЗрдВ рдХрд┐рд╕реА рднреА рдмрдХрд╡рд╛рд╕ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЛрд╖реНрдардХ рдФрд░ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ (), <>, {}, [], "", '' рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЦреЛрд▓рдиреЗ рдФрд░ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреНрд▓рд╛рд╕ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдФрд░ рд▓рдВрдШрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдордЭреМрддрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╕рдордЭрд╛рдПрдВ рдХрд┐ рдЬрдЯрд┐рд▓рддрд╛ рдХреНрдпрд╛ рд╣реИред
template <typename T>
bool IsNAN(T x) { return x != x; }
, ┬л ┬╗ (
Not-a-Number). float/double/long double. , .
, ? . . . . . , PVS-Studio . - , - .
. Boost .
, . , . , .
3-4 Boost .
,
PVS-Studio 5.06 Boost 1.55 ( ).
Boost
. .
N1.
point3D operator/(const point3D &p1, const point3D &p2)
{
return point3D( p1.x/p2.x , p1.y/p2.y , p1.z/p1.z );
}
PVS-Studio: V501 There are identical sub-expressions to the left and to the right of the '/' operator: p1.z / p1.z lorenz_point.cpp 61
, 'p1.z' . , 'p2.z'.
N2.
BOOST_UBLAS_INLINE
compressed_matrix_view(const compressed_matrix_view& o) :
size1_(size1_), size2_(size2_),
nnz_(nnz_),
index1_data_(index1_data_),
index2_data_(index2_data_),
value_data_(value_data_)
{}
PVS-Studio ( ): V546 Member of a class is initialized by itself: 'size1_(size1_)'. sparse_view.hpp 193
. , . , 'o'. , :
BOOST_UBLAS_INLINE
compressed_matrix_view(const compressed_matrix_view& o) :
size1_(o.size1_), size2_(o.size2_),
nnz_(o.nnz_),
index1_data_(o.index1_data_),
index2_data_(o.index2_data_),
value_data_(o.value_data_)
{}
N3.
static std::basic_string<wchar_t> get(char const* source = "")
{
....
std::auto_ptr<wchar_t> result (new wchar_t[len+1]);
....
}
PVS-Studio: V554 Incorrect use of auto_ptr. The memory allocated with 'new []' will be cleaned using 'delete'. tree_to_xml.ipp 71
'std::auto_ptr' . 'delete', 'delete []'. , . "
delete, new[] C++ ".
: generate_static.hpp 53.
N4. . SOCKET
-, , , SOCKET. . :
SOCKET s = Foo();
if (s < 0) { Error(); }
. SOCKET_ERROR. , ┬лsocket < 0┬╗ ┬лsocket >= 0┬╗.
Linux SOCKET . Windows SOCKET . , .
Boost.
typedef SOCKET socket_type;
class socket_holder
{
....
socket_type socket_;
....
socket_type get() const { return socket_; }
....
};
template <typename Socket>
boost::system::error_code accept(....)
{
....
if (new_socketnew_socket.get() >= 0)
{
if (peer_endpoint)
peer_endpoint->resize(addr_len);
if (!peer.assign(impl.protocol_, new_socket.get(), ec))
new_socket.release();
}
return ec;
}
PVS-Studio: V547 Expression 'new_socket.get() >= 0' is always true. Unsigned type value is always >= 0. win_iocp_socket_service.hpp 436
Windows , . ┬лnew_socketnew_socket.get() >= 0┬╗ .
N5.
void set_duration_style(duration_style style)
{
duration_style_ == style;
}
PVS-Studio: V607 Ownerless expression 'duration_style_ == style'. base_formatter.hpp 51
. , , : ┬лduration_style_ = style┬╗. .
, PVS-Studio . . . , . , . PVS-Studio . . , .
? (
). , . , . , , : , TDD, .
N6.
template< typename CharT >
basic_settings< CharT > parse_settings(std::basic_istream< CharT >& strm)
{
....
string_type line;
while (!strm.eof())
{
std::getline(strm, line);
const char_type* p = line.c_str();
parser.parse_line(p, p + line.size());
line.clear();
++line_number;
}
....
}
PVS-Studio: V663 Infinite loop is possible. The 'cin.eof()' condition is insufficient to break from the loop. Consider adding the 'cin.fail()' function call to the conditional expression. settings_parser.cpp 285
, тАФ . , . , , . . , . 'eof()' 'false'. . 'eof()' 'fail()'. 'fail()' , . .
: V663 Infinite loop is possible. The 'cin.eof()' condition is insufficient to break from the loop. Consider adding the 'cin.fail()' function call to the conditional expression. adjacency_list_io.hpp 195
N7.
template<>
struct identity_element<boost::gregorian::date_duration>
{
static boost::gregorian::date_duration value()
{
return
boost::gregorian::date(boost::gregorian::min_date_time) -
boost::gregorian::date(boost::gregorian::min_date_time);
}
};
PVS-Studio: V501 There are identical sub-expressions 'boost::gregorian::date(boost::gregorian::min_date_time)' to the left and to the right of the '-' operator. gregorian.hpp 57
, 0?
, PVS-Studio . - Boost . !