எக்ஸ்-ரே எஞ்சின் - மூல குறியீடு. எக்ஸ்-ரே எஞ்சினில் உள்ள முரண்பாடுகளைத் தேடுகிறது

மீண்டும் 2006 இல் வெளியிடப்பட்டது சிறந்த விளையாட்டுஎல்லா காலங்களிலும் மற்றும் மக்கள்– ஸ்டாக்கர்.

இந்த விளையாட்டு ஆறு ஆண்டுகளாக வளர்ச்சியில் இருந்தது, மேலும் பல விளையாட்டாளர்கள் அதன் வெளியீட்டை நம்பவில்லை. ஆனால் 2006 இல், அது இறுதியாக நடந்தது. ஸ்டாக்கர் எல்லா எதிர்பார்ப்புகளையும் தாண்டிவிட்டார், மேலும் பல ரசிகர்கள் "ஷேடோ ஆஃப் செர்னோபில்" பல முறை ஒரே நேரத்தில் முடித்தனர்.

2008 இல், இந்த அற்புதமான விளையாட்டின் அடுத்த பகுதி வெளியிடப்பட்டது - "தெளிந்த வானம்", மற்றும் ஒரு வருடம் கழித்து "கால் ஆஃப் ப்ரிபியாட்" தோன்றியது.

ஸ்டாக்கரின் இந்த பகுதியில்தான் வீரர்கள் பெரும்பாலும் ஒரு சிக்கலை எதிர்கொள்ளத் தொடங்கினர் - “எக்ஸ்ரே எஞ்சின் 1.6 பிழை”, மேலும் இந்த மதிப்பாய்வில் இந்த சிக்கலை எவ்வாறு சமாளிப்பது என்று பயனர்களுக்குச் சொல்ல முயற்சிப்போம்.

"மகிழ்ச்சியின் பிழை"

சரியாக இதைத்தான் விளையாட்டாளர்கள் இந்த பிழை என்று அழைத்தனர், ஏனெனில் அது தோன்றியபோது, ​​பிழையின் விளக்கத்துடன் ஒரு அடையாளம் தோன்றியது, இடதுபுறத்தில் பச்சைப் பிழை வரையப்பட்டது. எக்ஸ்ரே எஞ்சின் 1.6 பிழை தோன்றியபோது - விளையாட்டு தோராயமாக மூடப்பட்டதுடெஸ்க்டாப்பிற்கான அணுகலுடன்.

சிக்கலைத் தீர்ப்பது பற்றி இணையத்தில் சிறிய தகவல்கள் இருந்தன, மேலும் உற்பத்தியாளர்களிடமிருந்து நடைமுறையில் எதுவும் வரவில்லை தகவல் இல்லைஇந்த பிழைக்காக, ஆனால் வெறித்தனமான விளையாட்டாளர்கள் கைவிடவில்லை - அவர்கள் முடிந்தவரை பிரச்சினைக்கு ஒரு தீர்வைத் தேடினார்கள்.

வெளியே வந்தவர்கள் விளையாட்டு புதுப்பிப்புகள்இணைப்புகள் இந்த சிக்கலை ஓரளவு தீர்த்தன, ஆனால் சில சந்தர்ப்பங்களில் அது இன்னும் திரும்பியது. விளையாட்டாளர்கள் தெளிவான வடிவத்தையும் கவனித்தனர்: அவர்கள் விளையாட்டை சமீபத்திய பதிப்பிற்கு புதுப்பித்து, வீடியோ இயக்கியைப் புதுப்பித்தால், "துரதிர்ஷ்ட பிழை" கிட்டத்தட்ட பின்வாங்கியது.

காரணங்களைக் கண்டறிந்து நீக்குதல்

STALKER இன் முதல் பாகத்தின் வெளியீட்டில், பயனர்கள் ஏற்கனவே குறிப்பிட்டுள்ளனர் பல பிழைகள். விளையாட்டில், கொல்ல முடியாத எதிரிகளை சந்திப்பது சாத்தியமாக இருந்தது, மேலும் மக்கள்தொகை இல்லாத இடங்களைக் காண முடிந்தது.

ஏற்கனவே "ஷேடோ ஆஃப் செர்னோபில்" இல் எக்ஸ்ரே எஞ்சின் 1.6 பிழை அவ்வப்போது தோன்றத் தொடங்கியது, ஆனால் அது போதுமான அழுத்தம் இல்லை, மேலும் விளையாட்டை நிறைவு செய்வது அதிகமாகவோ அல்லது குறைவாகவோ சாத்தியமாக இருந்தது.

டெவலப்பர்கள் "சோதனை செய்தபோது" புதிய இணைப்பு 1.5.04,பின்னர் "வண்டு" பிரச்சனை முற்றிலும் தீர்க்கப்பட்டது. ஆனால் இவை அனைத்தும் நீங்கள் விளையாட்டின் உரிமம் பெற்ற பதிப்பைப் பதிவிறக்குகிறீர்கள், அதன் ஆயுதக் களஞ்சியத்தில் தேவையான அனைத்து இணைப்புகளும் உள்ளன.

X-ray Engine 1.6 பிழையின் மற்றொரு பொதுவான காரணம் திருட்டு விரிசல்களின் பயன்பாடு. அந்த நேரத்தில் ஸ்டாக்கர் நன்கு அறியப்பட்ட திருட்டு எதிர்ப்பு மென்பொருளான ஸ்டார்ஃபோர்ஸால் பாதுகாக்கப்பட்டதால், எந்தவொரு திருட்டு மென்பொருளின் பயன்பாடும் "பிழை" உடன் பிழை தோன்றுவதற்கு வழிவகுத்தது.

இந்த வழக்கில், ஒரே ஒரு தீர்வு உள்ளது - Stalker ஐ வாங்கவும், நீராவியில் சொல்லவும், மேலும் எரிச்சலூட்டும் X-ray இன்ஜின் 1.6 ஆல் உற்சாகமான விளையாட்டு குறுக்கிடப்படும் என்று பயப்படாமல் எந்த பிரச்சனையும் இல்லாமல் விளையாடுங்கள்.

இந்த பிழைக்கான மற்றொரு பொதுவான காரணம் "வளைந்த" நாகரீகங்கள்,ஒருபுறம், மிகவும் அவசியமானவை, ஆனால் மறுபுறம், சரியான நிறுவல் தேவை மற்றும் நன்கு வடிவமைக்கப்பட வேண்டும்.

மோட்ஸ் ஸ்டாக்கரை மிகவும் வண்ணமயமாக மாற்றுகிறது என்பதில் சந்தேகமில்லை, ஆனால் அவை பெரும்பாலும் எக்ஸ்ரே எஞ்சின் 1.6 பிழைக்கு காரணமாகும்.

இந்த வழக்கில், தேவையான மோட்களை சரியாகத் தேர்ந்தெடுப்பதன் மூலம், ஒரு குறிப்பிட்ட செருகு நிரலைப் பற்றிய பல பயனர் மதிப்புரைகளைப் படிப்பதன் மூலம், மிகவும் நிலையான மோடைத் தேர்ந்தெடுத்து அதை சரியாக நிறுவுவதன் மூலம் இந்த பிழை நீக்கப்படும். எல்லாவற்றையும் சரியாகச் செய்தால், “துரதிர்ஷ்டத்தின் பிழை” உங்களைத் தவிர்க்கும், மேலும் உங்களுக்கு பிடித்த விளையாட்டை மிகவும் டைனமிக் மோட்களுடன் முழுமையாக அனுபவிப்பீர்கள்.

எக்ஸ்ரே எஞ்சின் 1.6 பிழை ஏற்படுவதற்கு மற்றொரு காரணம் உள்ளது - இது அனைத்து வகையான "ஏமாற்றுபவர்களையும்" பயன்படுத்துதல்விரைவான பாதைக்கு. ஏமாற்று குறியீடுகளைப் பயன்படுத்துவதில் நீங்கள் ஆர்வமாக இருந்தால் - முடிவில்லாத வெடிமருந்துகள், சில சக்திவாய்ந்த ஆயுதங்கள் மற்றும் பல, இந்த விஷயத்தில் நீங்கள் விளையாட்டின் போது எக்ஸ்ரே எஞ்சின் 1.6 பிழையை எதிர்கொள்ள அதிக வாய்ப்புள்ளது.

"ஏமாற்றுபவர்கள்" மூலம் விளையாட்டை ஓவர்லோட் செய்வது வழிவகுக்கிறது நிலைத்தன்மை இழப்புஎக்ஸ்ரே இயந்திரம், மற்றும் தோன்றும் ஃப்ரைஸ்கள் மற்றும் பின்னடைவுகள் "துரதிர்ஷ்டம் பிழை" தோற்றத்தை தூண்டும். ஸ்டாக்கர் கேமில் எது ஏற்கத்தக்கது, எது அதிகமாக உள்ளது - "ஏமாற்றுபவர்கள்" என்ற அடிப்படையில் விளையாட்டாளர் அறிந்திருக்க வேண்டும். விளையாட்டில் நீங்கள் எவ்வளவு குறைவான "ஊன்றுகோல்" பயன்படுத்துகிறீர்களோ, அவ்வளவு நிலையான மற்றும் பிழை இல்லாத ஸ்டாக்கர் உங்களுக்கு வேலை செய்யும்.

எப்போது பிழை ஏற்பட்ட சந்தர்ப்பங்களும் உண்டு கண்காணிப்பு அமைப்புகள்தனித்தனியாக நிறுவப்பட்டது.

ஸ்டாக்கர் உங்களுக்காக குறைபாடற்ற முறையில் செயல்பட, மானிட்டர் அமைப்புகள் "பரிந்துரைக்கப்பட வேண்டும்", மேலும் பெரும்பாலான சந்தர்ப்பங்களில் இது எரிச்சலூட்டும் "பிழையை" அகற்றும்.

முடிவில், நான் இன்னும் ஒரு கவனத்தை ஈர்க்க விரும்புகிறேன் முக்கியமான புள்ளி, இது X-ray Engine 1.6 பிழையை ஏற்படுத்துகிறது. எப்போது இந்த பிரச்சனை தோன்றலாம் pagefile.sys ஒட்டுமொத்த அமைப்பின் நிலையான செயல்பாட்டிற்கு போதுமான அளவு இல்லை.

ஸ்டாக்கரைப் பொறுத்தவரை, “ஸ்வாப்” என்பது உங்கள் ரேமின் அளவை விட இரண்டு மடங்கு அதிகமாக இருக்க வேண்டும், அப்போதுதான் நீங்கள் விளையாட்டில் நிலைத்தன்மையை அடைவீர்கள், மேலும் “எக்ஸ்ரே எஞ்சின் 1.6” உங்களை என்றென்றும் விட்டுவிடும். பேஜிங் கோப்பின் அளவை எவ்வாறு சரிசெய்வது என்பதை நாங்கள் உங்களுக்குச் சொல்ல மாட்டோம், ஏனெனில் இது நீண்ட காலமாக கூகிளில் விரிவாக விவரிக்கப்பட்டுள்ளது.

முடிவுரை

இன்றும் கூட, பிரியமான ஸ்டாக்கர் விளையாட்டின் அனைத்து பகுதிகளும் இந்தத் தொடரின் ஆர்வமுள்ள ரசிகர்களை மகிழ்விப்பதை நிறுத்துவதில்லை. ஸ்டாக்கர் உண்மையில் தோன்றினார் கேமிங் உலகில் புரட்சி, மற்றும் அதன் யதார்த்தமான கிராபிக்ஸ் அந்தக் கால வீரர்களை மெய்யாகவே மெய்சிலிர்க்க வைத்தது.

ஆம், சில சிக்கல்கள் இருந்தன, இன்று இந்த சிக்கல்களைத் தீர்ப்பதற்கான முக்கிய முறைகளைப் படித்தோம். ஒரு நல்ல விளையாட்டு!

    உள்ளடக்கம்
  • Lada XRAY, Vesta மாடலுடன் சேர்ந்து, இப்போது AvtoVAZ இன் புதிய நம்பிக்கை மற்றும் ஆதரவு என்று அழைக்கப்படலாம். இவை நிறுவனத்தின் முகத்தைக் குறிக்கும் கார்கள் மற்றும் புதிய சுற்றுஅதன் வளர்ச்சியில். புதிய எக்ஸ்-ரே ஹேட்ச்பேக்கின் வளர்ச்சி மிகுந்த கவனத்துடன் மேற்கொள்ளப்பட்டதில் ஆச்சரியமில்லை. மேலும் சிறப்பு கவனம்தோற்றத்திற்கு மட்டுமல்ல, தொழில்நுட்ப கூறுகளுக்கும் கவனம் செலுத்தப்பட்டது. மற்றும் இயந்திரம், உங்களுக்குத் தெரிந்தபடி, "காரின் இதயம்", எனவே எஞ்சின்கள் எப்போதும் நிறுவனத்தின் பொறியாளர்களுக்கு முன்னுரிமை அளிக்கின்றன.

    லாடா எக்ஸ்-ரே இயந்திரங்களின் சுருக்கமான பண்புகள்.

    லாடா எக்ஸ்-ரே இயந்திரங்களின் பட்டியல்

    மொத்தத்தில், ஹேட்ச்பேக் மூன்று என்ஜின்களைப் பெறும், இரண்டு உள்நாட்டு அலகுகள் ஒரு "வெளிநாட்டில்" ஒன்றுடன் நீர்த்தப்படுகின்றன. இயந்திரங்களின் பட்டியல்:

    தொழில்நுட்ப பண்புகள் மற்றும் வடிவமைப்பு அம்சங்கள்

    புதிய மாடலின் அனைத்து பவர் யூனிட்களும் மிகவும் நவீனமானவை மற்றும் இந்த பிரிவில் வழங்கப்பட்ட அனைத்து தற்போதைய அளவுகோல்களையும் பூர்த்தி செய்கின்றன.

    VAZ-21129

    இது ஒரு உள்நாட்டு பெட்ரோல் இயந்திரம், இது நீண்ட காலமாக தயாரிக்கப்பட்டது மற்றும் லாடா வெஸ்டா உள்ளிட்ட பிற அவ்டோவாஸ் மாடல்களிலும் நிறுவப்பட்டுள்ளது.

    • தொகுதி - 1,596 செமீ³;
    • கட்டமைப்பு - இன்-லைன்;
    • இடம் - குறுக்கு;
    • சிலிண்டர்களின் எண்ணிக்கை - 4;
    • வால்வுகளின் எண்ணிக்கை - 16;
    • அதிகபட்ச சக்தி - 106 லி. உடன். (78.2 kW) 5,800 rpm இல்;
    • அதிகபட்ச முறுக்கு - 4,200 ஆர்பிஎம்மில் 148 என்எம்;
    • டைமிங் டிரைவ் - பெல்ட்;
    • இயக்கவியல் - 11.4 நொடி;
    • அதிகபட்ச வேகம் - 176 கிமீ / மணி;
    • சுருக்க விகிதம் - 11 அலகுகள்;
    • சிலிண்டர் விட்டம் - 82 மிமீ;
    • பிஸ்டன் ஸ்ட்ரோக் - 75.6 மிமீ;
    • சுற்றுச்சூழல் தரநிலைகள் - யூரோ-5;
    • எரிபொருள் - AI-95;
    • எரிபொருள் நுகர்வு (நகரம்/நெடுஞ்சாலை/கலப்பு முறை) - 9.3 l/7.2 l/5.9 l.
    • சாத்தியம் - 400+ எல். உடன்.
    • வள இழப்பு இல்லாமல் - 150 எல். உடன்.

    எஞ்சின் எக்ஸ்-ரே VAZ 21129.

    Lada X-Ray VAZ-21129 இயந்திரம் VAZ-21127 தொடர் இயந்திரத்தின் அடிப்படையில் உருவாக்கப்பட்டது, இது Priora மாடலுக்காக வடிவமைக்கப்பட்டுள்ளது. அதில் பல மாற்றங்கள் மற்றும் மேம்பாடுகள் செய்யப்பட்டுள்ளன. உட்கொள்ளும் பன்மடங்கில் உள்ள மடிப்புகளின் தொகுப்பைப் பயன்படுத்துவது மிகவும் குறிப்பிடத்தக்கது, இதன் மூலம் அதன் நீளம் மாற்றப்படுகிறது, இது உகந்த பயன்முறையில் குறைந்த மற்றும் அதிக வேகத்தில் செயல்படுவதற்கு உத்தரவாதம் அளிக்கிறது. கூடுதலாக, பொறியாளர்கள் இயந்திர வடிவமைப்பில் வெகுஜன காற்று ஓட்ட சென்சார் கைவிட்டனர். அதற்கு பதிலாக, மற்ற இரண்டு சாதனங்கள் நிறுவப்பட்டன - காற்று வெப்பநிலை மற்றும் முழுமையான அழுத்தம் உணரிகள். அத்தகைய தீர்வு எரியக்கூடிய கலவையின் மீது முழுமையான கட்டுப்பாட்டின் சாத்தியத்தை வழங்குகிறது, மேலும் செயலற்ற முறையில் "மிதக்கும்" வேகத்தின் சாத்தியத்தை நீக்குகிறது.

    1.6 லிட்டர் மற்றும் 16 வால்வுகளின் வழக்கமான தொகுதிக்கு பின்னால், பல நுணுக்கங்கள் மறைக்கப்பட்டுள்ளன.

    இயந்திரத்தின் வடிவமைப்பிலும், சப்ஃப்ரேமில் நிறுவப்பட்ட யூனிட்டின் இடைநீக்கத்திற்கு புதிய தீர்வுகள் பயன்படுத்தப்பட்டன, மேலும் வெளியேற்ற மற்றும் உட்கொள்ளும் அமைப்புகளிலும் மாற்றங்கள் செய்யப்பட்டன. இந்த நடவடிக்கைகள் இயந்திரத்திற்கு உத்தரவாதம் அளித்தன, மற்றவற்றுடன், இயக்க இரைச்சல் குறைப்பு, அத்துடன் நச்சுத்தன்மை மற்றும் எரிபொருள் நுகர்வு குறைப்பு.

    இந்த கதை VAZ 21129 இயந்திரத்தைப் பற்றி விரிவாகக் கூறுகிறது:

    HR16DE

    Renault-Nissan H4M-HR16DE இன்ஜின் Alliance Renault Nissan இலிருந்து AvtoVAZ இன் கூட்டாளர்களால் வழங்கப்பட்டது. இது நீண்ட காலமாக தயாரிக்கப்பட்டு, பிரெஞ்சு மற்றும் ஜப்பானிய நிறுவனங்களின் பல மாடல்களில் வெற்றிகரமாக நிறுவப்பட்டுள்ளது - நிசான் டைடா, நிசான் விங்ரோட், நிசான் நோட், லாடா வெஸ்டா, நிசான் காஷ்காய் மற்றும் பிற.

    X-Ray HR16DE இன்ஜின் அதன் அனைத்து மகிமையிலும்.

    • தொகுதி - 1,598 செமீ³;
    • கட்டமைப்பு - இன்-லைன்;
    • இடம் - குறுக்கு;
    • சிலிண்டர்களின் எண்ணிக்கை - 4;
    • வால்வுகளின் எண்ணிக்கை - 16;
    • சக்தி வகை - மின்னணு கட்டுப்பாட்டுடன் விநியோகிக்கப்பட்ட எரிபொருள் ஊசி;
    • அதிகபட்ச சக்தி - 110 லி. உடன். (81 kW) 5,500 rpm இல்;
    • அதிகபட்ச முறுக்கு - 4,000 ஆர்பிஎம்மில் 150 என்எம்;
    • நேர இயக்கி - சங்கிலி;
    • இயக்கவியல் - 11.1 நொடி;
    • அதிகபட்ச வேகம் - 181 கிமீ / மணி;
    • சுருக்க விகிதம் - 10.7 அலகுகள்;
    • சிலிண்டர் விட்டம் - 76 மிமீ;
    • பிஸ்டன் ஸ்ட்ரோக் - 88 மிமீ;
    • சுற்றுச்சூழல் தரநிலைகள் - யூரோ-4/5;
    • எரிபொருள் - AI-92/95;
    • எரிபொருள் நுகர்வு (நகரம்/நெடுஞ்சாலை/கலப்பு முறை) - 8.9 l/6.8 l/5.6 l.
    • சாத்தியம் - 150+ எல். உடன்.
    • வள இழப்பு இல்லாமல் - 125 எல். உடன்.

    இந்த Lada X-Ray சக்தி அலகு பல அம்சங்களைக் கொண்டுள்ளது. மிகவும் சிறப்பியல்பு சக்தி குறைதல் - மற்ற மாடல்களில் இது 114 முதல் 118 ஹெச்பி வரை மாறுபடும். s., பின்னர் X-Ray விஷயத்தில் அது 110 hp ஆக குறைக்கப்பட்டது. ப., இந்த இயந்திரத்தை ரஷ்யா மற்றும் பிற சிஐஎஸ் நாடுகளின் யதார்த்தங்களுக்கு ஏற்ப மாற்றியமைக்க என்ன செய்யப்பட்டது.

    டைமிங் டிரைவில் ஒரு சங்கிலியைப் பயன்படுத்துவது அதை மிகவும் நம்பகமானதாக ஆக்குகிறது.

    எனவே, லாடா உரிமையாளர்களுக்கான வழக்கமான பெல்ட்டுக்கு பதிலாக, அதன் வடிவமைப்பில் ஒரு சங்கிலி பயன்படுத்தப்படுகிறது, இது நம்பகத்தன்மையை கணிசமாக அதிகரிக்கிறது, ஏனெனில் அது உடைக்கப்படாது மற்றும் விரைவாக நீட்டாது. நவீன ஹைட்ராலிக் இழப்பீடுகள் இல்லை - அவற்றுக்கு பதிலாக சாதாரண அனுசரிப்பு வால்வுகள் உள்ளன. இருப்பினும், புஷர் சரிசெய்தல் செயல்முறை 80,000 - 100,000 கிமீக்கு முன் தேவைப்படாது. மற்ற அம்சங்களுக்கிடையில், வால்வு நேரத்தை மாற்றுவதற்கான ஒரு சிக்கலான பயன்பாடு, இன்டேக் ஷாஃப்ட்டில் நேரடியாக ஃபேஸ் ஷிஃப்டரை சரிசெய்தல், ஒவ்வொரு சிலிண்டரிலும் ஒரு ஜோடி இன்ஜெக்டர்கள் இருப்பது மற்றும் எலக்ட்ரானிக் த்ரோட்டில் வால்வைப் பயன்படுத்துதல் ஆகியவற்றை ஒருவர் முன்னிலைப்படுத்தலாம்.

    ஹைட்ராலிக் இழப்பீடுகளை மறுப்பது வால்வுகளை சரிசெய்ய வேண்டிய அவசியத்தை ஏற்படுத்துகிறது.

    கூடுதலாக, நவீனமயமாக்கல் செயல்பாட்டின் போது, ​​லாடா எக்ஸ்-ரே மின் அலகு கூறுகளின் உராய்வு குறிகாட்டிகள் குறைக்கப்பட்டன. சங்கிலி வழிகாட்டி, பாலிஷ் (கண்ணாடி) ஆகியவற்றில் ஃவுளூரின் பூச்சு பயன்படுத்துவதன் மூலம் இது அடையப்பட்டது. எந்திரம்கிரான்ஸ்காஃப்ட். செயலற்ற நிலையில், இழப்புகள் (எரிபொருள் மற்றும் உந்தி) குறைக்கப்பட்டுள்ளன, இது C-VTC மாற்றும் கோணத்தை அதிகரிப்பதன் மூலமும், கட்டுப்பாட்டை (தற்காலிகமாக) மீண்டும் கணக்கிடுவதன் மூலமும் உறுதி செய்யப்படுகிறது.

    VAZ-21179

    இது ஒரு புதிய உள்நாட்டு எஞ்சின், குறிப்பாக எக்ஸ்-ரே மற்றும் வெஸ்டா மாடல்களுக்காக உருவாக்கப்பட்டது. VAZ 21126 தொடரின் சக்தி அலகு அதற்கான அடிப்படையாகத் தேர்ந்தெடுக்கப்பட்டது, அதில் இருந்து சிலிண்டர் தொகுதி கடன் வாங்கப்பட்டது. இருப்பினும், அவர்களின் ஒற்றுமைகள் இங்கு முடிவடைகின்றன.

    வரிசையில் மிகவும் சக்திவாய்ந்த VAZ-21179 இயந்திரம்.

  1. தொகுதி - 1,774 செமீ³;
  2. கட்டமைப்பு - இன்-லைன்;
  3. இடம் - குறுக்கு;
  4. சிலிண்டர்களின் எண்ணிக்கை - 4;
  5. வால்வுகளின் எண்ணிக்கை - 16;
  6. சக்தி வகை - மின்னணு கட்டுப்பாட்டுடன் விநியோகிக்கப்பட்ட எரிபொருள் ஊசி;
  7. அதிகபட்ச சக்தி - 122 லி. உடன். (90 kW) 6,050 rpm இல்;
  8. அதிகபட்ச முறுக்கு - 3,750 ஆர்பிஎம்மில் 170 என்எம்;
  9. டைமிங் டிரைவ் - பெல்ட்;
  10. கேம்ஷாஃப்ட்களின் எண்ணிக்கை - 2 (DOHC வகை);
  11. இயக்கவியல் - 10.9 நொடி;
  12. அதிகபட்ச வேகம் - 186 கிமீ / மணி;
  13. சுருக்க விகிதம் - 9.8 அலகுகள்;
  14. பிஸ்டன் ஸ்ட்ரோக் - 84 மிமீ;
  15. சுற்றுச்சூழல் தரநிலைகள் - யூரோ-5;
  16. எரிபொருள் - AI-95;
  17. எரிபொருள் நுகர்வு (நகரம்/நெடுஞ்சாலை/கலப்பு முறை) - 8.6 l/6.8 l/5.8 l.
  • சாத்தியம் - தரவு இல்லை;
  • வள இழப்பு இல்லாமல் - தரவு இல்லை.

இந்த Lada X-Ray இன்ஜின் மற்ற VAZ இன்ஜின்களிலிருந்து மிகவும் வித்தியாசமானது. பவர் யூனிட்டின் வடிவமைப்பில், ஒரு புதிய த்ரோட்டில் வால்வு பயன்படுத்தப்பட்டது, மெக்கானிக்கல் டிரைவ் இல்லாமல், சிலிண்டர் தலையில் மஹ்லேவிலிருந்து புதிய வால்வுகள் (இலகுரக) பொருத்தப்பட்டிருந்தது, மேலும் கூடுதல் எண்ணெய் சேனல்கள் கட்ட சீராக்கியுடன் இணைக்கப்பட்டன.

த்ரோட்டில் வால்வில் மெக்கானிக்கல் டிரைவ் இல்லை.

பெரிய பிஸ்டன் ஸ்ட்ரோக் வேலை அளவு அதிகரிப்பதை உறுதி செய்தது, கிரான்ஸ்காஃப்ட் அதிகரித்த கிராங்க் ஆரம் மூலம் வகைப்படுத்தப்படுகிறது, மேலும் ஈகோஅலயன்ஸ் (ரஷ்யா) இலிருந்து பன்மடங்கு இன்லெட் சேனல்கள் விட்டம் 39 மிமீ வரை அதிகரிக்கப்பட்டன. ஆக்ஸிஜன் சென்சார் Bosch ஆல் வழங்கப்படுகிறது, மேலும் ஆக்ஸிஜன் பம்ப் GMB (கொரியா) மூலம் வழங்கப்படுகிறது. அதே கொரிய நிறுவனம் அதிகரித்த செயல்திறன் கொண்ட எண்ணெய் பம்ப் வழங்குவதற்கு பொறுப்பாகும்.

கிரான்ஸ்காஃப்ட்கள் அதிகரித்த கிராங்க் ஆரம் கொண்டவை.

ஃபெடரல் மொகல் பிராண்ட் இணைக்கும் கம்பி மற்றும் பிஸ்டன் குழுவை (இலகுரக வகை) வழங்குகிறது, மேலும் ஜெர்மன் நிறுவனமான INA ஒரு ஜோடி உருளைகள் பொருத்தப்பட்ட தானியங்கி டைமிங் பெல்ட் டென்ஷனர்களை வழங்குகிறது. எரிபொருள் ரயில் கான்டினென்டல் கவலையிலிருந்து வாங்கப்படுகிறது. அதன் உட்செலுத்திகள் அதிகரித்த செயல்திறனால் வகைப்படுத்தப்படுகின்றன, இதன் விளைவாக ஸ்ப்ரே முறை புதிய எக்ஸ்-ரே இயந்திரத்தின் செயல்பாட்டிற்கு சிறப்பாக சரிசெய்யப்படுகிறது.

கேம்ஷாஃப்ட்கள் கொரியாவிலிருந்து வந்தவை.

நீங்கள் பார்க்க முடியும் என, ரஷ்ய வளர்ச்சி இருந்தபோதிலும், கூறுகளின் குறிப்பிடத்தக்க பகுதி வெளிநாட்டு நிறுவனங்களிலிருந்து வாங்கப்படுகிறது.

லாடா எக்ஸ்-ரேக்கு புதிய 1.8 லிட்டர் எஞ்சினை இணைக்கும் செயல்முறையை வீடியோ காட்டுகிறது:

X-Ray Engine என்பது STALKER தொடரின் முக்கிய விளையாட்டுகளில் பயன்படுத்தப்பட்ட இயந்திரம் மற்றும் அவற்றுடன் சேர்த்தல். இது கேம் டெவலப்பர் ஜிஎஸ்சி கேம் வேர்ல்டால் உருவாக்கப்பட்டது. மூல குறியீடு மற்றும் மேம்பாட்டு கருவிகள் (SDK) அடங்கும்.

எக்ஸ்-ரே எஞ்சின் பதிப்பு 9.0 முதல் 11 வரை டைரக்ட்எக்ஸை ஆதரிக்கிறது. இது ஒத்திவைக்கப்பட்ட லைட்டிங் தொழில்நுட்பத்தையும் செயல்படுத்துகிறது, இதன் காரணமாக லைட்டிங் விளைவு யதார்த்தமாக வழங்கப்படுகிறது. இது நாள் மாற்றங்கள், வானிலை மாற்றங்கள் மற்றும் மென்மையான நிழல்கள் ஆகியவற்றை ஆதரிக்கிறது. இயற்பியல் மற்றொரு திறந்த இயக்கவியல் இயந்திரத்தை அடிப்படையாகக் கொண்டது. இது யதார்த்தமான மோதல் இயக்கவியல் மற்றும் திடமான உடல் இயக்கவியலை வழங்குகிறது.

மூலக் குறியீட்டுடன் கூடுதலாக, எக்ஸ்-ரே எஞ்சின் மேம்பாட்டுக் கருவிகளைக் கொண்டுள்ளது மென்பொருள்(SDK). விளையாட்டில் தங்கள் சொந்த மாற்றங்களை உருவாக்க மற்றும் சேர்க்க விரும்பும் மோடர்களுக்கு இது முதன்மையாக பயனுள்ளதாக இருக்கும்.

எஞ்சின் அம்சங்கள்

STALKER தொடரில் கேம்களை உருவாக்குவதில் பயன்படுத்தப்பட்டது.
DirectX பதிப்புகள் 9 முதல் 11 வரை ஆதரிக்கிறது.
ஒத்திவைக்கப்பட்ட விளக்குகள், வானிலை நிகழ்வுகள், யதார்த்தமான மோதல் இயக்கவியல் ஆகியவற்றை ஆதரிக்கிறது.
உங்கள் சொந்த மாற்றங்களை உருவாக்குவதற்கான கருவிகளைக் கொண்டுள்ளது.

எக்ஸ்-ரே எஞ்சின் மற்றும் அதன் கருவிகள் இலவசமாக விநியோகிக்கப்படுகின்றன, எனவே இயந்திரத்தை இலவசமாக பதிவிறக்கம் செய்யலாம்.

S.T.A.L.K.E.R.: Shadow of Chernobyl விளையாட்டிற்காக X-Ray ஆனது உக்ரேனிய நிறுவனமான GSC கேம்வேர்ல்டால் உருவாக்கப்பட்டது. DirectX 8.1/9.0c/10/10.1/11, இயற்பியல் மற்றும் ஒலி இயந்திரங்கள், மல்டிபிளேயர் மற்றும் A-Life செயற்கை நுண்ணறிவு அமைப்பு ஆகியவற்றிற்கான ஆதரவுடன் ரெண்டரிங் இந்த எஞ்சினில் அடங்கும். பின்னர், நிறுவனம் அதன் இயந்திரத்தின் பதிப்பு 2.0 ஐ உருவாக்கியது புதிய விளையாட்டு, ஆனால் மேம்பாடு நிறுத்தப்பட்டது மற்றும் மூல குறியீடுகள் ஆன்லைனில் கசிந்தன.

திட்டமானது, அதன் அனைத்து சார்புகளுடன், விஷுவல் ஸ்டுடியோ 2015 இல் எளிதாகச் சேகரிக்கப்படுகிறது. சோதனைக்காக, GitHub களஞ்சியத்திலிருந்து எஞ்சின் பதிப்பு 1.6 இன் மூலக் குறியீட்டைப் பயன்படுத்தினோம் மற்றும் நிலையான குறியீடு பகுப்பாய்வி PVS-Studio 6.04 ஐப் பயன்படுத்தினோம். இணைப்பு.

நகல்-ஒட்டு

முதலில், குறியீட்டை நகலெடுப்பதில் தொடர்புடைய பிழைகளைப் பார்ப்போம். வெவ்வேறு நிகழ்வுகளில் அவை நிகழும் காட்சி பொதுவாக ஒரே மாதிரியாக இருக்கும்: அவை குறியீட்டை நகலெடுத்தன, சில மாறிகளை மாற்றின, மேலும் சிலவற்றை மறந்துவிட்டன. இத்தகைய பிழைகள் கோட்பேஸ் மூலம் விரைவாக பரவக்கூடும், மேலும் நிலையான பகுப்பாய்வி இல்லாமல் அவை தவறவிடுவது மிகவும் எளிதானது.

MxMatrix& MxQuadric::ஒரே மாதிரியான(MxMatrix&H) const ( .... unsigned int i, j; for(i=0; i) எச்சரிக்கை PVS-ஸ்டுடியோ: V533 "for" ஆபரேட்டருக்குள் ஒரு தவறான மாறி அதிகரிக்கப்பட்டிருக்கலாம். "i" ஐ மதிப்பாய்வு செய்யவும். mxqmetric.cpp 76

பகுப்பாய்வி அதை உள்ளமைக்கப்பட்ட வளையத்தில் கண்டறிந்தது க்கானமாறி அதிகரிக்கப்படுகிறது நான், மற்றும் மாறி சரிபார்க்கப்பட்டது ஜே, இது ஒரு எல்லையற்ற வளையத்திற்கு வழிவகுக்கிறது. பெரும்பாலும், நகலெடுக்கும்போது அதை மாற்ற மறந்துவிட்டார்கள்.
void CBaseMonster::settings_read(CInifile const * ini, LPCSTR பிரிவு, SMonsterSettings &data) ( .... if (ini->line_exist(ppi_section,"color_base")) sscanf(ini->r_string(ppi_section,"color_base"), "%f,%f,%f", &data.m_attack_effector.ppi.color_base.r, &data.m_attack_effector.ppi.color_base.g, &data.m_attack_effector.ppi.color_base.b); என்றால் (ini->line_exist(ppi_section) ,"color_base")) sscanf(ini->r_string(ppi_section,"color_gray"), "%f,%f,%f", &data.m_attack_effector.ppi.color_gray.r, &data.m_attack_effector.ppi.color_gray.g , &data.m_attack_effector.ppi.color_gray.b); என்றால் (ini->line_exist(ppi_section,"color_base")) sscanf(ini->r_string(ppi_section,"color_add"), "%f,%f,%f" , &data.m_attack_effector.ppi.color_add.r, &data.m_attack_effector.ppi.color_add.g, &data.m_attack_effector.ppi.color_add.b); .... )
PVS-ஸ்டுடியோ எச்சரிக்கைகள்:

  • V581 "if" ஆபரேட்டர்களின் நிபந்தனை வெளிப்பாடுகள் ஒன்றோடொன்று ஒன்றாக இருக்கும். வரிகளை சரிபார்க்கவும்: 445, 447. base_monster_startup.cpp 447
  • V581 "if" ஆபரேட்டர்களின் நிபந்தனை வெளிப்பாடுகள் ஒன்றோடொன்று ஒன்றாக இருக்கும். வரிகளை சரிபார்க்கவும்: 447, 449. base_monster_startup.cpp 449
இந்த துண்டில், ஒரே மாதிரியான பல நிபந்தனை வெளிப்பாடுகள் ஒரு வரிசையில் பயன்படுத்தப்படுகின்றன. வெளிப்படையாக, அது மாற்றப்பட வேண்டும் நிறம்_அடிப்படைஅன்று நிறம்_சாம்பல்மற்றும் நிறம்_சேர்உடலில் உள்ள குறியீட்டின் படி என்றால்கிளைகள் .
/* ஒரு ஒற்றை அறிக்கையை செயலாக்கு */ நிலையான வெற்றிடமான ProcessStatement(char *buff, int len) ( .... if (strncmp(buff,"\\pauthr\\",8) == 0) ( ProcessPlayerAuth(buff, len ); ) இல்லையெனில் (strncmp(buff,"\\getpidr\\",9) == 0) (ProcessGetPid(buff, len); ) இல்லையெனில் (strncmp(buff,"\\getpidr\\",9) == 0) (ProcessGetPid(buff, len); ) else if (strncmp(buff,"\\getpdr\\",8) == 0) (ProcessGetData(buff, len); ) else if (strncmp(buff, "\\setpdr\\",8) == 0) (ProcessSetData(buff, len); ) )
எச்சரிக்கை PVS-ஸ்டுடியோ: V517 "if (A) (...) else if (A) (...)" வடிவத்தின் பயன்பாடு கண்டறியப்பட்டது. தருக்கப் பிழை இருப்பதற்கான நிகழ்தகவு உள்ளது. வரிகளை சரிபார்க்கவும்: 1502, 1505. gstats.c 1502

முந்தைய எடுத்துக்காட்டில், இங்கே இரண்டு ஒத்த நிபந்தனைகள் பயன்படுத்தப்படுகின்றன ( strncmp(buff,"\\getpidr\\",9) == 0) இது ஒரு பிழையா அல்லது அணுக முடியாத குறியீட்டா என்பதை உறுதியாகக் கூறுவது கடினம், ஆனால் இது நிச்சயமாக கவனம் செலுத்துவது மதிப்பு. உடன் தொகுதிகள் இருக்க வேண்டும் என்பது சாத்தியம் getpidr/setpidrஉடன் ஒப்புமை மூலம் getpdr/setpdr.
வகுப்பு RGBAMipMappedCubeMap ( .... size_t உயரம்() const ( return cubeFaces.height(); ) size_t width() const ( return cubeFaces.height(); ) .... );
எச்சரிக்கை PVS-ஸ்டுடியோ: V524 "அகல" செயல்பாட்டின் உடல் "உயரம்" செயல்பாட்டின் உடலுக்கு முழுமையாகச் சமமாக இருப்பது விந்தையானது. tpixel.h 1090

முறைகள் உயரம் ()மற்றும் அகலம் ()அதே உடல் வேண்டும். கனசதுரத்தின் முகங்களின் பரிமாணங்கள் கணக்கிடப்படுவதைக் கருத்தில் கொண்டு, இங்கே பிழை இல்லாமல் இருக்கலாம். ஆனால் முறையை மாற்றி எழுதுவது நல்லது அகலம் ()பின்வரும் வழியில்:
size_t அகலம்() const ( திரும்ப cubeFaces.width(); )

C++ இன் தவறான பயன்பாடு

C++ என்பது ப்ரோக்ராமருக்குப் பல வாய்ப்புகளைத் தரும் அற்புதமான மொழி... குறிப்பாக கொடூரமான முறையில் தன்னைத்தானே காலில் சுட்டுக்கொள்ள. வரையறுக்கப்படாத நடத்தை, நினைவக கசிவுகள் மற்றும், நிச்சயமாக, எழுத்துப்பிழைகள் - இந்த வகையான பிழைகள் தற்போதைய பிரிவில் விவாதிக்கப்படும்.

டெம்ப்ளேட் struct _matrix33 (பொது: typedef _matrix33 சுய; typedef Self& SelfRef; .... IC SelfRef sMTxV(Tvector& R, float s1, const Tvector& V1) const ( R.x = s1*(m * V1.x + m * V1.y + m * V1.z); R.y = s1*(m * V1.x + m * V1.y + m * V1.z); R.z = s1*(m * V1.x + m * V1.y + m * V1.z); ) .... )
எச்சரிக்கை PVS-ஸ்டுடியோ: V591 வெற்றிடமற்ற செயல்பாடு மதிப்பை வழங்கும். _matrix33.h 435

முறையின் முடிவில் தவிர்க்கப்பட்டது திரும்ப *இது. தரநிலையின்படி, அத்தகைய குறியீடு வரையறுக்கப்படாத நடத்தைக்கு வழிவகுக்கும். திரும்பும் மதிப்பு ஒரு குறிப்பு என்பதால், இது பெரும்பாலும் திரும்பும் மதிப்பை அணுக முயற்சிக்கும்போது நிரல் செயலிழக்கச் செய்யும்.
ETOOLS_API int __stdcall ogg_enc(....) ( .... FILE *in, *out = NULL; .... input_format *format; .... in = fopen(in_fn, "rb"); if(in == NULL) திரும்ப 0; வடிவம் = open_audio_file(in, &enc_opts); if(!format)( fclose(in); return 0; ); out = fopen(out_fn, "wb"); if(out == NULL) (fclose(out); return 0; ) .... )
எச்சரிக்கை PVS-ஸ்டுடியோ: V575 பூஜ்ய சுட்டிக்காட்டி "fclose" செயல்பாட்டிற்கு அனுப்பப்பட்டது. முதல் வாதத்தை ஆய்வு செய்யவும். ogg_enc.cpp 47

மிகவும் சுவாரஸ்யமான உதாரணம். அழைப்பில் வாதம் இருப்பதை பகுப்பாய்வி கண்டறிந்தது fcloseசமம் nullptr, செயல்பாடு அழைப்பை அர்த்தமற்றதாக்குகிறது. ஓடை மூடப்பட்டிருக்க வேண்டும் என்று கருதலாம் உள்ளே
void NVI_Image::ABGR8_To_ARGB8() (// அனைத்து பிக்சல்களுக்கும் RGB ஐ மாற்றுகிறது உறுதி(IsDataValid()); உறுதிப்படுத்து(GetBytesPerPixel() == 4); UINT hxw = GetNumPixels(); (UINT i = 0;க்கு;< hxw; i++) { DWORD col; GetPixel_ARGB8(&col, i); DWORD a = (col >> 24) && 0x000000FF; DWORD b = (col >> 16) && 0x000000FF; DWORD g = (col >> 8) && 0x000000FF; DWORD r = (col >> 0) && 0x000000FF; கோல் = (அ<< 24) | (r << 16) | (g << 8) | b; SetPixel_ARGB8(i, col); } }
PVS-ஸ்டுடியோ எச்சரிக்கைகள்:

  • V560 நிபந்தனை வெளிப்பாட்டின் ஒரு பகுதி எப்போதும் உண்மை: 0x000000FF. nvi_image.cpp 170
  • V560 நிபந்தனை வெளிப்பாட்டின் ஒரு பகுதி எப்போதும் உண்மை: 0x000000FF. nvi_image.cpp 171
  • V560 நிபந்தனை வெளிப்பாட்டின் ஒரு பகுதி எப்போதும் உண்மை: 0x000000FF. nvi_image.cpp 172
  • V560 நிபந்தனை வெளிப்பாட்டின் ஒரு பகுதி எப்போதும் உண்மை: 0x000000FF. nvi_image.cpp 173
குறியீட்டின் இந்த பிரிவில், தருக்க மற்றும் பிட் செயல்பாடுகள் கலக்கப்படுகின்றன. இதன் விளைவாக புரோகிராமர் எதிர்பார்த்தபடி இருக்காது: colஉள்ளீட்டுத் தரவைப் பொருட்படுத்தாமல் எப்போதும் 0x01010101 க்கு சமமாக இருக்கும்.

சரியான விருப்பம்:
DWORD a = (col >> 24) & 0x000000FF; DWORD b = (col >> 16) & 0x000000FF; DWORD g = (col >> 8) & 0x000000FF; DWORD r = (col >> 0) & 0x000000FF;
விசித்திரமான குறியீட்டின் மற்றொரு எடுத்துக்காட்டு:
VertexCache::VertexCache() ( VertexCache(16); )
எச்சரிக்கை PVS-ஸ்டுடியோ: V603 பொருள் உருவாக்கப்பட்டது ஆனால் அது பயன்படுத்தப்படவில்லை. நீங்கள் கன்ஸ்ட்ரக்டரை அழைக்க விரும்பினால், "this->VertexCache::VertexCache(....)" பயன்படுத்தப்பட வேண்டும். vertexcache.cpp 6

ஒரு நிகழ்வைத் தொடங்குவதற்கு ஒரு கட்டமைப்பாளரிடமிருந்து மற்றொருவரை அழைப்பதற்குப் பதிலாக, ஒரு புதிய வகை பொருள் உருவாக்கப்பட்டு உடனடியாக அழிக்கப்படும். வெர்டெக்ஸ் கேச். இதன் விளைவாக, உருவாக்கப்பட்ட பொருளின் உறுப்பினர்கள் துவக்கப்படாமல் இருப்பார்கள்.
BOOL CActor::net_Spawn(CSE_Abstract* DC) ( .... m_States.empty(); .... )
எச்சரிக்கை PVS-ஸ்டுடியோ: V530 "காலி" செயல்பாட்டின் வருவாய் மதிப்பு பயன்படுத்தப்பட வேண்டும். actor_network.cpp 657

செயல்பாட்டின் மூலம் வழங்கப்பட்ட மதிப்பு பயன்படுத்தப்படவில்லை என்று பகுப்பாய்வி எச்சரிக்கிறது. புரோகிராமர் முறைகளை கலக்கியது போல் தெரிகிறது காலியாக()மற்றும் தெளிவான (): காலியாக()வரிசையை அழிக்கவில்லை, ஆனால் அது காலியாக உள்ளதா என சரிபார்க்கிறது.

பல்வேறு திட்டங்களில் இத்தகைய பிழைகள் அடிக்கடி நிகழ்கின்றன. பிரச்சனை என்னவென்றால் பெயர் காலியாக()வெளிப்படையாக இல்லை: சிலர் அதை ஒரு செயலாக உணர்கிறார்கள் - நீக்கம். அத்தகைய தெளிவின்மை எழுவதைத் தடுக்க, வினைச்சொற்களை முறையின் தொடக்கத்தில் சேர்ப்பது நல்லது: உண்மையில், காலியாக உள்ளது()உடன் தெளிவான ()குழப்புவது கடினம்.

இதே போன்ற எச்சரிக்கை:

V530 "தனித்துவம்" செயல்பாட்டின் வருவாய் மதிப்பு பயன்படுத்தப்பட வேண்டும். uidragdroplistex.cpp 780
size_t xrDebug::BuildStackTrace(EXCEPTION_POINTERS* exPtrs, char *buffer, size_t திறன், size_t linecapacity) ( memset(buffer, capacity*linecapacity, 0); .... )
எச்சரிக்கை PVS-ஸ்டுடியோ: V575 "memset" செயல்பாடு "0" உறுப்புகளை செயலாக்குகிறது. மூன்றாவது வாதத்தை ஆராயுங்கள். xrdbug.cpp 104

அழைக்கும் போது மெம்செட்வாதங்கள் இடமாற்றம் செய்யப்படுகின்றன, இதன் விளைவாக தாங்கல் முதலில் விரும்பியபடி மீட்டமைக்கப்படவில்லை. இது போன்ற பிழையானது ஒரு திட்டத்தில் மிக நீண்ட காலத்திற்கு வாழலாம், ஏனெனில் அதைக் கண்டறிவது மிகவும் கடினம். அத்தகைய இடங்களில், ஒரு நிலையான பகுப்பாய்வி நிரலாளரின் மீட்புக்கு வருகிறது.

சரியான பயன்பாடு மெம்செட்:
மெம்செட்(பஃபர், 0, கொள்ளளவு*லைன் கொள்ளளவு);
பின்வரும் பிழையானது தவறாக இயற்றப்பட்ட தருக்க வெளிப்பாட்டுடன் தொடர்புடையது.
configs_dumper
எச்சரிக்கை PVS-ஸ்டுடியோ: V547 வெளிப்பாடு எப்போதும் உண்மை. அநேகமாக "&&" ஆபரேட்டரை இங்கே பயன்படுத்த வேண்டும். configs_dumper.cpp 262

"x != a || x != b" போன்ற வெளிப்பாடுகள் எப்போதும் உண்மைதான். பெரும்பாலும், ஆபரேட்டருக்கு பதிலாக || && ஆபரேட்டர் குறிக்கப்பட்டது.

"C/C++ இல் உள்ள தருக்க வெளிப்பாடுகள். தொழில் வல்லுநர்கள் எவ்வாறு தவறு செய்கிறார்கள்" என்ற கட்டுரையில் தருக்க வெளிப்பாடுகளில் உள்ள பிழைகள் பற்றி மேலும் படிக்கலாம்.
void SBoneProtections::reload(const shared_str& bone_sect, IKinematics* kinematics) ( .... CInifile::Sect &protections = pSettings->r_section(bone_sect); (CInifile::SectCIt i=protections.Data.begin(); .Data.end() != i; ++i) ( string256 buffer; BoneProtection BP; .... BP.BonePassBullet = (BOOL) (atoi(_GetItem(i->second.c_str(), 2, buffer) )>0.5f); .... ))
எச்சரிக்கை PVS-ஸ்டுடியோ: V674 "float" வகையின் "0.5f" எழுத்து "int" வகையின் மதிப்புடன் ஒப்பிடப்படுகிறது. boneprotections.cpp 54

பகுப்பாய்வி ஒரு முழு எண் மதிப்பை உண்மையான மாறிலியுடன் ஒப்பிடுவதைக் கண்டறிந்தது. இங்கே, ஒப்புமை மூலம், செயல்பாடு பயன்படுத்தப்பட்டிருக்க வேண்டும் atof, ஆனால் இல்லை அடோய், மற்றொரு வழக்கில் இந்த ஒப்பீட்டை மீண்டும் எழுதுவது மதிப்புக்குரியது, இதனால் அது சந்தேகத்திற்குரியதாகத் தெரியவில்லை. இருப்பினும், இதை எழுதிய டெவலப்பர் மட்டுமே இந்த உதாரணம் தவறா இல்லையா என்பதை உறுதியாகக் கூற முடியும்.
class IGameObject: பொது மெய்நிகர் IFactoryObject, பொது மெய்நிகர் ISpatial, பொது மெய்நிகர் ISheduled, பொது மெய்நிகர் IRenderable, பொது மெய்நிகர் ICollidable (பொது: .... மெய்நிகர் u16 ID() const = 0; .... ) BOOL CBulletManager:(tconstManager: collide::ray_defs& rd, IGameObject* object, LPVOID அளவுருக்கள்) ( bullet_test_callback_data* pData = (bullet_test_callback_data*) params; SBullet* bullet = pData->pBullet; புல்லட் &(object_) (புல்லட்-> fly_dist flags.ricochet_was)) FALSE என்று திரும்பவும்; BOOL bRes = TRUE; என்றால் (பொருள்)( .... ) bRes திரும்ப; )
எச்சரிக்கை PVS-ஸ்டுடியோ: V595 "object" சுட்டிக்காட்டி nullptr க்கு எதிராக சரிபார்க்கப்படுவதற்கு முன்பு பயன்படுத்தப்பட்டது. வரிகளை சரிபார்க்கவும்: 42, 47. level_bullet_manager_firetrace.cpp 42

சுட்டி சோதனை பொருள்சமத்துவத்திற்காக nullptr dereferening பிறகு செல்கிறது பொருள்->ஐடி(). ஒரு வேளை பொருள் nullptr க்கு சமம், இது நிரலை செயலிழக்கச் செய்யும்.
#ifdef _EDITOR BOOL WINAPI DllEntryPoint(....) #else BOOL WINAPI DllMain(....) #endif ( மாறு (உல்_காரணம்_அழைப்பு) ( .... case DLL_THREAD_ATTACH: if (!strstr(GetCommandLine(), "-editor ()
எச்சரிக்கை PVS-ஸ்டுடியோ: V718 "CoInitializeEx" செயல்பாடு "DllMain" செயல்பாட்டிலிருந்து அழைக்கப்படக்கூடாது. xrcore.cpp 205

உடலில் DllMainசில WinAPI செயல்பாடுகளை நீங்கள் பயன்படுத்த முடியாது CoInitializeEx. MSDN இல் உள்ள ஆவணங்களைப் படிப்பதன் மூலம் இதை நீங்கள் சரிபார்க்கலாம். இந்த செயல்பாட்டை எவ்வாறு மீண்டும் எழுதுவது என்பது குறித்து திட்டவட்டமான ஆலோசனையை வழங்குவது சாத்தியமில்லை, ஆனால் இதுபோன்ற சூழ்நிலை ஆபத்தானது என்பதைப் புரிந்துகொள்வது மதிப்பு, ஏனெனில் இது நூல்களை பரஸ்பர தடுப்பு அல்லது அசாதாரணமான முடிவுக்கு வழிவகுக்கும்.

முன்னுரிமைகளில் பிழைகள்

int sgetI1(கையொப்பமிடப்படாத எழுத்து **bp) ( int i; என்றால் (flen == FLEN_ERROR) திரும்ப 0; i = **bp; என்றால் (i > 127) i -= 256; flen += 1; *bp++; திரும்ப i ;)
எச்சரிக்கை PVS-ஸ்டுடியோ: V532 "*சுட்டி++" வடிவத்தின் அறிக்கையை ஆய்வு செய்வதைக் கவனியுங்கள். ஒருவேளை இதன் பொருள்: "(*சுட்டி)++". lwio.c 316

பிழை அதிகரிப்பின் பயன்பாடு தொடர்பானது. தெளிவுக்காக, அடைப்புக்குறிக்குள் வைத்து, இந்த வெளிப்பாட்டை மீண்டும் எழுதலாம்:
*(bp++);
அதாவது, உள்ளடக்கம் முகவரிக்கு மாற்றப்படாது பிபி,ஆனால் சுட்டிக்காட்டி தன்னை, இந்த சூழலில் அர்த்தமற்றது. குறியீட்டில் கீழே போன்ற துண்டுகள் உள்ளன *bp += N, அதனால்தான் இது பிழை என்று முடிவு செய்தேன்.

அடைப்புக்குறிகளை வைப்பது அத்தகைய பிழையைத் தவிர்க்க உதவும், இது கணக்கீடுகளின் வரிசையை இன்னும் தெளிவாக்கும். மற்றொரு நல்ல நுட்பத்தைப் பயன்படுத்துவது நிலையானமாறக்கூடாத வாதங்களுக்கு.

இதே போன்ற எச்சரிக்கைகள்:

  • V532 "*சுட்டி++" வடிவத்தின் அறிக்கையை ஆய்வு செய்வதைக் கருத்தில் கொள்ளுங்கள். ஒருவேளை இதன் பொருள்: "(*சுட்டி)++". lwio.c 354
  • V532 "*சுட்டி++" வடிவத்தின் அறிக்கையை ஆய்வு செய்வதைக் கருத்தில் கொள்ளுங்கள். ஒருவேளை இதன் பொருள்: "(*சுட்டி)++". lwob.c 80
void CHitMemoryManager::load (IRreader &packet) ( .... if (!spawn_callback || !spawn_callback->m_object_callback) if(!g_dedicated_server) Level().client_spawn_manager().add(delayed_objject-mID_object. ),அழைப்பு;
எச்சரிக்கை PVS-ஸ்டுடியோ: V563 இந்த "வேறு" கிளை முந்தைய "if" அறிக்கைக்கு பொருந்த வேண்டும். hit_memory_manager.cpp 368

இந்த துண்டில் கிளை வேறுஇரண்டாவது சேர்ந்தது என்றால்அதன் வலது-தொடர்பு காரணமாக, இது குறியீடு வடிவமைப்புடன் ஒத்துப்போவதில்லை. அதிர்ஷ்டவசமாக, இந்த வழக்கு நிரலின் செயல்பாட்டை பாதிக்காது, இருப்பினும், இது பிழைத்திருத்தம் மற்றும் சோதனை செயல்முறையை சிக்கலாக்கும்.

பரிந்துரை எளிதானது - அதிகமாகவோ அல்லது குறைவாகவோ சிக்கலான கிளைகளில் சுருள் பிரேஸ்களைப் பயன்படுத்தவும்.
வெற்றிடமான HUD_SOUND_ITEM::PlaySound(HUD_SOUND_ITEM& hud_snd, const Fvector& position, const IGameObject* parent, bool b_hud_mode, bool looped, u8 index) ( .... hud_snd.m_nds vol. ume * b_hud_mode? psHUDSoundVolume:1.0f); )
எச்சரிக்கை PVS-ஸ்டுடியோ: V502 ஒருவேளை "?:" ஆபரேட்டர் எதிர்பார்த்ததை விட வேறு வழியில் செயல்படும். "*" ஆபரேட்டரை விட "?:" ஆபரேட்டருக்கு குறைந்த முன்னுரிமை உள்ளது. hudsound.cpp 108

மும்மை நிபந்தனை ஆபரேட்டருக்கு பெருக்கத்தை விட குறைவான முன்னுரிமை உள்ளது, எனவே செயல்பாடுகளின் வரிசை பின்வருமாறு:
(hud_snd.m_activeSnd->தொகுதி * b_hud_mode)?psHUDSoundVolume:1.0f
வெளிப்படையாக சரியான குறியீடு இப்படி இருக்க வேண்டும்:
hud_snd.m_activeSnd->தொகுதி * (b_hud_mode?psHUDSoundVolume:1.0f)
மும்மை ஆபரேட்டரைக் கொண்ட பல வெளிப்பாடுகள் உள்ளன என்றால்-வேறுகிளைகள் அல்லது AND/OR செயல்பாடுகள் என்பது கூடுதல் அடைப்புக்குறிகளை வைப்பது நல்லது.

இதே போன்ற எச்சரிக்கைகள்:

  • V502 ஒருவேளை "?:" ஆபரேட்டர் எதிர்பார்த்ததை விட வேறு வழியில் செயல்படும். "?:" ஆபரேட்டருக்கு "+" ஆபரேட்டரை விட குறைவான முன்னுரிமை உள்ளது. uihudstateswnd.cpp 487
  • V502 ஒருவேளை "?:" ஆபரேட்டர் எதிர்பார்த்ததை விட வேறு வழியில் செயல்படும். "?:" ஆபரேட்டருக்கு "+" ஆபரேட்டரை விட குறைவான முன்னுரிமை உள்ளது. uicellcustomitems.cpp 106

கூடுதல் ஒப்பீடுகள்

void CDestroyablePhysicsObject::OnChangeVisual() ( என்றால் (m_pPhysicsShell)( if(m_pPhysicsShell)m_pPhysicsShell-> செயலிழக்க(); .... ) .... )
எச்சரிக்கை PVS-ஸ்டுடியோ: V571 தொடர் சோதனை. "if (m_pPhysicsShell)" நிபந்தனை ஏற்கனவே வரி 32 இல் சரிபார்க்கப்பட்டது. அழிக்கக்கூடிய Physicsobject.cpp 33

இந்த எடுத்துக்காட்டில் இது இரண்டு முறை சரிபார்க்கப்படுகிறது m_pPhysicsShell. பெரும்பாலும், இரண்டாவது காசோலை தேவையற்றது.
செல்லாது< 98)) { .... }else{ .... } }
எச்சரிக்கை PVS-ஸ்டுடியோ: V571 தொடர் சோதனை. "m_wVersion > 89" நிபந்தனை ஏற்கனவே வரி 987 இல் சரிபார்க்கப்பட்டது. xrserver_objects_alife_items.cpp 989

மிகவும் விசித்திரமான குறியீடு. ஒருவேளை அவர்கள் பின்னர் வெளிப்பாட்டை மறந்துவிட்டார்கள் என்றால் (m_wVersion > 89), அல்லது ஒரு முழு தொடர் வேறு - என்றால். இந்த முறை திட்ட உருவாக்குநரால் இன்னும் விரிவான பரிசீலனை தேவைப்படுகிறது.
void ELogCallback(செல்லம் *சூழல், LPCSTR txt) ( .... bool bDlg = ("#"==txt)||((0!=txt)&&("#"==txt)); என்றால் (bDlg) ( int mt = ("!"==txt)||((0!=txt)&&("!"==txt))?1:0; .... ) )
PVS-ஸ்டுடியோ எச்சரிக்கைகள்:

  • V590 "(0 != txt) && ("#" == txt)" எக்ஸ்ப்ரெஷனை பரிசோதிக்க வேண்டும். வெளிப்பாடு அதிகமாக உள்ளது அல்லது தவறான அச்சிடலைக் கொண்டுள்ளது. elog.cpp 29
  • V590 "(0 != txt) && ("!" == txt)" எக்ஸ்ப்ரெஷனை பரிசோதிக்க வேண்டும். வெளிப்பாடு அதிகமாக உள்ளது அல்லது தவறான அச்சிடலைக் கொண்டுள்ளது. elog.cpp 31
மாறி துவக்க வெளிப்பாடுகளில் bDlgமற்றும் mtபரிசோதனை (0 != txt)தேவையற்றது. நீங்கள் அதைத் தவிர்த்துவிட்டால், வெளிப்பாடுகளைப் படிக்க மிகவும் எளிதாகிவிடும்:
bool bDlg = ("#"==txt)||("#"==txt); int mt = ("!"==txt)||("!"==txt)?1:0;

தரவு வகை பிழைகள்


Float CRenderTarget ::im_noise_time; CRenderTarget::CRenderTarget() (.... param_blur = 0.f; param_gray = 0.f; param_noise = 0.f; param_duality_h = 0.f; param_duality_v = 0.f; param_noise_fps = 25.f; அளவுகோல் .f; im_noise_time = 1/100; im_noise_shift_w = 0; im_noise_shift_h = 0; .... )
எச்சரிக்கை PVS-ஸ்டுடியோ: V636 "1 / 100" வெளிப்பாடு மறைமுகமாக "int" வகையிலிருந்து "float" வகைக்கு அனுப்பப்பட்டது. ஒரு பகுதியளவு இழப்பைத் தவிர்க்க வெளிப்படையான வகை வார்ப்புகளைப் பயன்படுத்துவதைக் கவனியுங்கள். ஒரு எடுத்துக்காட்டு: இரட்டை A = (இரட்டை)(X) / Y;. gl_rendertarget.cpp 245

1/100 இன் மதிப்பு 0 ஆகும், ஏனெனில் இது ஒரு முழு எண் பிரிவு செயல்பாடு. 0.01f மதிப்பைப் பெற, நீங்கள் உண்மையான எழுத்தைப் பயன்படுத்த வேண்டும், வெளிப்பாட்டை மீண்டும் எழுத வேண்டும்: 1/100.0f. இந்த நடத்தை ஆசிரியரால் நோக்கமாக இருக்கலாம் என்றாலும், இங்கே எந்த பிழையும் இல்லை.
CSpaceRestriction::merge(....) const ( .... LPSTR S = xr_alloc (acc_length); (; I != E; ++I) temp = strconcat(sizeof(S),S,*temp,",",*(*I)->name()); ....)
எச்சரிக்கை PVS-ஸ்டுடியோ: V579 strconcat செயல்பாடு சுட்டிக்காட்டி மற்றும் அதன் அளவை வாதங்களாகப் பெறுகிறது. இது ஒரு தவறாக இருக்கலாம். முதல் வாதத்தை ஆய்வு செய்யவும். space_restriction.cpp 201

செயல்பாடு strconcat, பஃபர் நீளத்தை முதல் அளவுருவாக எடுத்துக்கொள்கிறது. தாங்கல் எஸ்என அறிவிக்கப்பட்டது LPSTR, அதாவது, ஒரு சரத்தின் சுட்டியாக. அளவு(கள்)பைட்டுகளில் சுட்டியின் அளவிற்கு சமமாக இருக்கும், அதாவது அளவு (கரி *), வரியில் உள்ள எழுத்துக்களின் எண்ணிக்கை அல்ல. நீங்கள் பயன்படுத்த வேண்டிய நீளத்தை கணக்கிட strlen(S).
வகுப்பு XRCDB_API மாடல் ( .... u32 நிலை; // 0 = தயார், 1 = init, 2 = கட்டிடம் .... ) வெற்றிடமான மாடல் :: பில்ட் (Fvector* V, int Vcnt, TRI* T, int Tcnt, build_callback * bc, void* bcp) ( .... BTHREAD_params P = (இது, V, Vcnt, T, Tcnt, bc, bcp ); thread_spawn(build_thread,"CDB-construction",0,&P); போது (S_INIT = = நிலை) தூக்கம்(5); .... )
எச்சரிக்கை PVS-ஸ்டுடியோ: V712 கம்பைலர் இந்த சுழற்சியை நீக்கலாம் அல்லது முடிவிலியாக மாற்றலாம். இதைத் தவிர்க்க, ஆவியாகும் மாறி(கள்) அல்லது ஒத்திசைவு ப்ரிமிட்டிவ்களைப் பயன்படுத்தவும். xrcdb.cpp 100

கம்பைலர் காசோலையை அகற்றலாம் S_INIT == நிலைஒரு தேர்வுமுறையாக, மாறி இருந்து நிலைசுழற்சியில் மாற்றப்படவில்லை. இந்த நடத்தை தவிர்க்க, நீங்கள் பயன்படுத்த வேண்டும் எளிதில் ஆவியாகிறமாறிகள் அல்லது திரிகளுக்கு இடையே தரவு ஒத்திசைவு வகைகள்.

இதே போன்ற எச்சரிக்கைகள்:

  • V712 கம்பைலர் இந்த சுழற்சியை நீக்கலாம் அல்லது முடிவிலியாக மாற்றலாம். இதைத் தவிர்க்க, ஆவியாகும் மாறி(கள்) அல்லது ஒத்திசைவு ப்ரிமிட்டிவ்களைப் பயன்படுத்தவும். levelcompilerloggerwindow.cpp 23
  • V712 கம்பைலர் இந்த சுழற்சியை நீக்கலாம் அல்லது முடிவிலியாக மாற்றலாம். இதைத் தவிர்க்க, ஆவியாகும் மாறி(கள்) அல்லது ஒத்திசைவு ப்ரிமிட்டிவ்களைப் பயன்படுத்தவும். levelcompilerloggerwindow.cpp 232
void CAI_Rat::UpdateCL() (.... என்றால் (!பயனுள்ள()) (மரபு::UpdateCL (); Exec_Look (Device.fTimeDelta); CMonsterSquad *squad = monster_squad().get_squad(this); என்றால் (squad && ((squad->GetLeader() != this && !squad->GetLeader()->g_Alive()) || squad->get_index(this) == u32(-1))) squad->SetLeader(இது );....)....)
எச்சரிக்கை PVS-ஸ்டுடியோ: V547 வெளிப்பாடு "squad->get_index(this) == u32(- 1)" எப்போதும் தவறானது. கையொப்பமிடப்படாத எழுத்து வகையின் மதிப்பு வரம்பு: . ai_rat.cpp 480

இந்த வெளிப்பாடு ஏன் எப்போதும் தவறானது என்பதைப் புரிந்து கொள்ள, தனிப்பட்ட செயல்களின் மதிப்புகளைக் கணக்கிடுவோம். u32(-1) என்பது 0xFFFFFFFF அல்லது 4294967295 க்கு சமம். முறையின் திரும்பும் வகை squad->get_index(....), - u8, எனவே அது அதிகபட்ச மதிப்பு- 0xFF அல்லது 255, இது u32(-1) ஐ விட கண்டிப்பாக குறைவாக உள்ளது. அதன்படி, அத்தகைய ஒப்பீட்டின் மதிப்பு எப்போதும் இருக்கும் பொய். தரவு வகையை u8 ஆக மாற்றுவதன் மூலம் இந்தக் குறியீட்டை எளிதாகச் சரிசெய்யலாம்:
அணி->get_index(இது) == u8(-1)
கையொப்பமிடப்படாத மாறிகளின் தேவையற்ற ஒப்பீடுகளுக்கு அதே கண்டறிதல் வேலை செய்கிறது:
பெயர்வெளி ALife (typedef u64 _TIME_ID; ) ALife::_TIME_ID CScriptActionCondition::m_tLifeTime; IC bool CScriptEntityAction::CheckIfTimeOver() ( return((m_tActionCondition.m_tLifeTime >= 0) && ((m_tActionCondition.m_tStartTime + m_tActionCondition.m_tLifeTime)< Device.dwTimeGlobal)); }
எச்சரிக்கை PVS-ஸ்டுடியோ: V547 வெளிப்பாடு "m_tActionCondition.m_tLifeTime >= 0" எப்போதும் உண்மை. கையொப்பமிடாத வகை மதிப்பு எப்போதும் >= 0. script_entity_action_inline.h 115

மாறி m_tLifeTimeகையொப்பமிடப்படவில்லை, எனவே இது எப்போதும் பூஜ்ஜியத்தை விட அதிகமாகவோ அல்லது சமமாகவோ இருக்கும். இது தேவையற்ற சோதனையா அல்லது தர்க்கத்தில் மறைக்கப்பட்ட பிழை உள்ளதா என்பதை டெவலப்பர் தீர்மானிக்க வேண்டும்.

இதே போன்ற எச்சரிக்கை:

V547 வெளிப்பாடு "m_tActionCondition.m_tLifeTime< 0" is always false. Unsigned type value is never < 0. script_entity_action_inline.h 143
ObjectFactory::ServerObjectBaseClass * CObjectItemScript::server_object (LPCSTR பிரிவு) const (ObjectFactory::ServerObjectBaseClass *object = nullptr; முயற்சி (object = m_server_creator:%Section(scection)" ] " "பிரிவு [%s]", e.what(),section) இலிருந்து சர்வர் பொருளை உருவாக்கும் போது எழுப்பப்பட்டது; திரும்ப (0); ) .... )
எச்சரிக்கை PVS-ஸ்டுடியோ: V746 வகை வெட்டுதல். ஒரு விதிவிலக்கு மதிப்பை விட குறிப்பு மூலம் பிடிக்கப்பட வேண்டும். object_item_script.cpp 39

செயல்பாடு வகுப்பு::விலக்கு::என்ன()மெய்நிகர் மற்றும் மரபுவழி வகுப்புகளில் மேலெழுதப்படலாம். இந்த எடுத்துக்காட்டில், விதிவிலக்கு மதிப்பால் பிடிக்கப்படுகிறது, எனவே வகுப்பு நிகழ்வு நகலெடுக்கப்படும் மற்றும் பாலிமார்பிக் வகை பற்றிய அனைத்து தகவல்களும் இழக்கப்படும். பேசு என்ன()அந்த வழக்கில் அது அர்த்தமற்றது. விதிவிலக்கு இணைப்பைப் பயன்படுத்தி பிடிக்கப்பட வேண்டும்:
பிடிக்க (const std::exception& e) (

இதர

void compute_cover_value (....) ( .... மிதவை மதிப்பு ; .... என்றால் (மதிப்பு< .999f) { value = value; } .... }
எச்சரிக்கை PVS-ஸ்டுடியோ: V570 "மதிப்பு" மாறி தானே ஒதுக்கப்படுகிறது. compiler_cover.cpp 260

மாறி மதிப்புதனக்கு ஒதுக்கப்பட்டது. இதை ஏன் செய்வது என்பது தெளிவாக இல்லை. ஒருவேளை அதற்கு வேறு அர்த்தம் கொடுத்திருக்க வேண்டும்.
void CActor::g_SetSprintAnimation(u32 mstate_rl, MotionID &head, MotionID &torso, MotionID &legs) ( SactorSprintState& sprint = m_anims->m_sprint; bool jump = (mstate_rl&mcstate_mc) || ​​anding) || (mstate_rl& mcLanding2) | | (mstate_rl&mcJump); .... )
எச்சரிக்கை PVS-ஸ்டுடியோ: V501 "||" இன் இடது மற்றும் வலதுபுறத்தில் "(mstate_rl & mcLanding)" ஒரே மாதிரியான துணை வெளிப்பாடுகள் உள்ளன. இயக்குபவர். actoranimation.cpp 290

பெரும்பாலும் இது ஒரு கூடுதல் சோதனை மட்டுமே. mstate_rl & mcLanding, ஆனால் பெரும்பாலும் இத்தகைய எச்சரிக்கைகள் தர்க்கம் மற்றும் ஆராயப்படாத enum மதிப்புகளில் பிழையைக் குறிக்கின்றன.

இதே போன்ற எச்சரிக்கைகள்:

  • V501 "&&" ஆபரேட்டரின் இடது மற்றும் வலதுபுறத்தில் "HudItemData()" ஒரே மாதிரியான துணை வெளிப்பாடுகள் உள்ளன. huditem.cpp 338
  • V501 "||" இன் இடது மற்றும் வலதுபுறத்தில் "list_idx == e_outfit" ஒரே மாதிரியான துணை வெளிப்பாடுகள் உள்ளன. இயக்குபவர். uimptradewnd_misc.cpp 392
  • V501 "||" இன் இடது மற்றும் வலதுபுறத்தில் "(D3DFMT_UNKNOWN == fTarget)" ஒரே மாதிரியான துணை வெளிப்பாடுகள் உள்ளன. இயக்குபவர். hw.cpp 312
RELATION_REGISTRY::RELATION_MAP_SPOTS::RELATION_MAP_SPOTS() ( .... spot_names = "எதிரி_இடம்"; ஸ்பாட்_பெயர்கள் = "எதிரி_இடம்"; .... )
எச்சரிக்கை PVS-ஸ்டுடியோ: V519 மாறிக்கு இரண்டு முறை மதிப்புகள் ஒதுக்கப்படுகின்றன. ஒருவேளை இது ஒரு தவறு. வரிகளை சரிபார்க்கவும்: 57, 58. relation_registry.cpp 58

ஒரு வரிசையில் ஒரு மாறிக்கு இரண்டு மதிப்புகள் ஒதுக்கப்பட்டிருப்பதை பகுப்பாய்வி கண்டறிந்துள்ளது. இந்த வழக்கில், அது வெறும் டெட் குறியீடு போல் தெரிகிறது மற்றும் அகற்றப்பட வேண்டும்.
void safe_verify(....) ( .... printf("FATAL ERROR (%s): தரவை சரிபார்க்க முடியவில்லை\n"); .... )
எச்சரிக்கை PVS-ஸ்டுடியோ: V576 தவறான வடிவம். "printf" செயல்பாட்டை அழைக்கும் போது வேறுபட்ட எண்ணிக்கையிலான உண்மையான வாதங்கள் எதிர்பார்க்கப்படுகின்றன. எதிர்பார்க்கப்படுகிறது: 2. தற்போது: 1. entry_point.cpp 41

செயல்பட printfபோதுமான வாதங்கள் அனுப்பப்படவில்லை: "%s" வடிவம் ஒரு சரத்திற்கு ஒரு சுட்டிக்காட்டி அனுப்பப்பட வேண்டும் என்பதைக் குறிக்கிறது. இந்த நிலைமை நினைவக அணுகல் பிழை மற்றும் நிரலின் அவசர முடிவுக்கு வழிவகுக்கும்.

  • pvs-studio
  • நிலையான குறியீடு பகுப்பாய்வு
  • C++
  • வேட்டையாடுபவர்
  • குறிச்சொற்களைச் சேர்க்கவும்

    கணினியில் உள்ள விளையாட்டுகள் "நேரத்தை கொல்ல" ஒரு சிறந்த வழியாகும், வேடிக்கையாகவும் ஓய்வெடுக்கவும். ஆர்வமுள்ள விளையாட்டாளராக இல்லாமல் கூட, ஒரு நபர் பெரும்பாலும் விளையாட்டு மேம்பாட்டுத் துறையில் தனது சொந்த விருப்பங்களைக் கொண்டிருக்கிறார். சிலர் துப்பாக்கி சுடும் வீரர்களை விரும்புகிறார்கள், மற்றவர்கள் உத்திகள் இல்லாமல் வாழ முடியாது.

    2006 இல், ஸ்டால்கர்: ஷேடோ ஆஃப் செர்னோபில் வெளியானது ஒரு உண்மையான நிகழ்வு. இந்த விளையாட்டு உலகம் முழுவதும் மில்லியன் கணக்கான ரசிகர்களைப் பெற்றுள்ளது. சமீபத்திய பதிப்பு, கால் ஆஃப் ப்ரிபியாட், 2009 இல் வெளியிடப்பட்டது, அதன் பிறகு விளையாட்டின் ரசிகர்களின் எண்ணிக்கை கடுமையாக அதிகரித்தது: செர்னோபில் அணுமின் நிலையத்தின் வளிமண்டலம் மிகவும் வசீகரமானது, பெரியவர்கள் கூட மணிக்கணக்கில் உட்கார முடியும்.

    துரதிர்ஷ்டவசமாக, பல பயனர்கள் பிழை என்று புகார் கூறுகின்றனர் எக்ஸ்ரே எஞ்சின்விளையாட்டை ரசிப்பதிலிருந்து அவர்களைத் தடுக்கிறது. அதன் தோற்றத்திற்கு என்ன காரணம் மற்றும் அதை எவ்வாறு அகற்றுவது? எங்கள் கட்டுரை அர்ப்பணிக்கப்பட்டது இதுதான்.

    எக்ஸ்ரே என்றால் என்ன?

    சிக்கலை எவ்வாறு தீர்ப்பது என்பதைக் கண்டறிய, அதன் மூல காரணத்தை நீங்கள் இன்னும் விரிவாக புரிந்து கொள்ள வேண்டும். XRay என்பது ஸ்டாக்கரின் அனைத்து பகுதிகளிலும் பயன்படுத்தப்படும் ஒரு விளையாட்டு இயந்திரம் என்பதிலிருந்து தொடங்குவோம்.

    இது இந்த விளையாட்டிற்காக குறிப்பாக உருவாக்கப்பட்டது, இது 2001 இல் மீண்டும் நடந்தது. STALKER திட்டமே ஒரு காவியமான "நீண்ட கால கட்டுமானமாக" மாறியதால், அது ஐந்து ஆண்டுகளுக்குப் பிறகுதான் வெளிச்சத்தைக் கண்டது. முதலில், டெவலப்பர்கள் இதை டைரக்ட்எக்ஸ் 8 உடன் பிரத்தியேகமாகப் பயன்படுத்த எண்ணினர், ஆனால் முத்தொகுப்பின் முதல் பகுதி வெளியிடப்பட்ட நேரத்தில், அவர்கள் டைரக்ட்எக்ஸ் 9க்கான ஆதரவைச் சேர்த்தனர். 2008 ஆம் ஆண்டில், நீண்டகால க்ளியர் ஸ்கை வெளியீடு அறிவிக்கப்பட்டபோது, பதிப்பு 10ம் அங்கு சேர்க்கப்பட்டது.

    இறுதியாக, "கால் ஆஃப் ப்ரிப்யாட்" டைரக்ட்எக்ஸ் 11ஐயும் பெற்றது. இருப்பினும், கேம் குறியீட்டிலேயே சில "கடினத்தன்மை" கொடுக்கப்பட்டதால், 11வது பதிப்பின் முழுத் திறனையும் எஞ்சினால் முழுமையாகக் கட்டவிழ்த்துவிட முடியவில்லை.

    பிழையின் வெளிப்பாடு என்ன?

    இந்த தருணத்தை எதனுடனும் குழப்ப முடியாது. விளையாட்டு திடீரென்று நின்று, பின்னர் டெஸ்க்டாப்பில் செயலிழக்கிறது. பிழைக் குறியீட்டை விவரிக்கும் உரையாடல் பெட்டி ஒரு பெரிய வண்டு சித்தரிப்பதால், XRay இயந்திரம் பெரும்பாலும் ரசிகர் மன்றங்களில் "பச்சை பேரழிவு" மற்றும் "துரதிர்ஷ்ட வண்டு" என்று அழைக்கப்படுகிறது.

    இருப்பினும், போதுமான பாடல் வரிகள். "வண்டு" தோன்றுவதற்கான காரணம் என்ன?

    தோற்றத்திற்கான காரணங்கள்

    ஐயோ, அத்தகைய எரியும் கேள்விக்கு தெளிவான பதில் இல்லை. GSC இன் டெவலப்பர்கள் நிறுவனம் இன்னும் இருந்த நேரத்தில் கூட காரணங்களைப் பற்றி குறிப்பாக கருத்து தெரிவிக்கவில்லை, இப்போது விரிவான பதில்களை நம்புவது முற்றிலும் அர்த்தமற்றது.

    சோதனை மற்றும் பிழை முறையைப் பயன்படுத்தி, வீடியோ அட்டைக்கு சமீபத்திய இயக்கிகளை நிறுவாத பயனர்களின் கணினிகளில் விளையாட்டு பெரும்பாலும் செயலிழக்கச் செய்வது கண்டறியப்பட்டது. இந்த மென்பொருளின் எந்தப் பதிப்பு உங்கள் கணினியில் நிறுவப்பட்டுள்ளது என்பது உங்களுக்குத் தெரியாவிட்டால், அதைப் புதுப்பிக்க வேண்டிய நேரம் இது.

    நாங்கள் விளையாட்டை புதுப்பிக்கிறோம்

    க்ளியர் ஸ்கையின் தோற்றத்தை நீங்கள் கண்டிருந்தால், டெவலப்பர்களுக்கு வீரர்கள் வழங்கிய "புகழ்ச்சியான" பெயர்கள் அனைத்தும் உங்களுக்கு நன்றாக நினைவிருக்கிறது. அதற்கும் ஒரு காரணம் இருந்தது! உண்மையில், விளையாடுவது முற்றிலும் சாத்தியமற்றது, மேலும் XRay இன்ஜின் பிழை இன்னும் சிறியதாக இருந்தது!

    அழியாத துப்பாக்கி சுடும் வீரர்களையும் முற்றிலும் காலியான "இருண்ட பள்ளத்தாக்கு" யையும் பாருங்கள்! 1.5.04 ஆட்-ஆன் மூலம் மட்டுமே என்னால் சாதாரணமாக விளையாட முடிந்தது, மேலும் முந்தைய பதிப்புகளில் செய்யப்பட்ட அனைத்து சேமிப்புகளும் வேலை செய்யவில்லை. சுருக்கமாக, உங்களிடம் இணையம் இருந்தால், சோம்பேறியாக இருக்காதீர்கள் மற்றும் டெவலப்பரின் வலைத்தளத்திற்குச் செல்லவும். தொடரில் உள்ள அனைத்து கேம்களுக்கும் ஏற்கனவே உள்ள அனைத்து இணைப்புகளும் உள்ளன, எனவே நீங்கள் அவற்றைப் பதிவிறக்கி நிறுவ வேண்டும். இந்த வழக்கில், ஸ்டாக்கரில் XRay இன்ஜின் பிழை மிகவும் குறைவாக அடிக்கடி தோன்றும்.

    கடற்கொள்ளையர் பதிப்புகள்

    டெவலப்பர்கள் இறுதி பயனர்களின் நலன்களை கணக்கில் எடுத்துக் கொள்ளாததால், நன்கு அறியப்பட்ட ஸ்டார்ஃபோர்ஸ் அமைப்பு மூலம் விளையாட்டு சட்டவிரோத நகலெடுப்பிலிருந்து பாதுகாக்கப்படுகிறது. பல பயனர்கள் தங்கள் கைகளில் கேமுடன் உரிமம் பெற்ற வட்டு வைத்திருக்கும் சந்தர்ப்பங்களில் கூட NoDVD ஐப் பதிவிறக்க விரும்புகிறார்கள் என்பதில் ஆச்சரியமில்லை.

    துரதிருஷ்டவசமாக, இந்த "மாத்திரைகள்" பல XRay இன்ஜின் பிழை தோன்றுவதற்கு காரணமாகின்றன. நீங்கள் ஸ்டார்ஃபோர்ஸ் இயக்க முறைமையை கெடுக்க விரும்பவில்லை என்றால் என்ன செய்வது, ஆனால் நீங்கள் எப்போதும் "பச்சை பிழையை" பார்க்க விரும்பவில்லை என்றால் என்ன செய்வது?

    ஐயோ, ஒரே ஒரு வழி இருக்கிறது. நீராவியில் விளையாட்டை வாங்கவும். இந்த டிஜிட்டல் உள்ளடக்க அங்காடியில் விளையாட்டு வெளிநாட்டு பயனர்களுக்கும் கிடைக்கும் என்பதால் (ஸ்டார்ஃபோர்ஸ் கொள்கையளவில் தடைசெய்யப்பட்டுள்ளது), நீங்கள் நிச்சயமாக சிக்கலில் இருந்து விடுபடுவீர்கள்.

    மற்ற காரணங்கள்

    பிழைக்கு பங்களிக்கும் மற்றொரு முக்கியமான காரணி உங்கள் கணினி வன்பொருளாக இருக்கலாம். மிகவும் புதிய அல்லது பழைய கூறுகள் மர்மமான உக்ரேனிய இயந்திரத்துடன் ஒத்துப்போகாமல் போகலாம், அதன் பிறகு நீங்கள் தொடர்ந்து XRay இன்ஜின் பிழையால் வேட்டையாடப்படுவீர்கள். "கால் ஆஃப் ப்ரிபியாட்" என்பது தற்போது விளையாட்டின் "புதிய" பதிப்பாகும், இது மிகவும் குறைவான பொதுவான வன்பொருள் சிக்கல்களைக் கொண்டுள்ளது. "செர்னோபில் நிழல்" மற்றும் "தெளிவான வானம்" இந்த விஷயத்தில் மிகவும் பழமையானவை, எனவே அவர்கள் பெரும்பாலும் புதிய வீடியோ அட்டைகளுடன் நண்பர்களாக இருக்க மறுக்கிறார்கள்.

    மோட்ஸ்

    "ஸ்டாக்கர்" வெளியிடப்பட்டபோது, ​​வீரர்களின் மகிழ்ச்சிக்கு எல்லையே இல்லை. விளையாட்டு உண்மையில் வரம்பற்ற சுதந்திர உணர்வைக் கொடுத்தது. GG தனது இயக்கத்தின் திசையில் நடைமுறையில் வரம்பற்ற நிலையில், எங்கும் செல்ல முடியும். நேரம் செல்ல செல்ல உற்சாகம் குறைந்து கொண்டே வந்தது.

    டெவலப்பர்கள் வெட்டப்பட்ட இடங்களைத் திருப்பித் தரப் போவதில்லை என்பது தெளிவாகியது, மேலும் விளையாட்டில் போதுமான நடவடிக்கை இல்லை. அப்போதுதான் MODகள் (விளையாட்டு மாற்றங்கள்) தோன்றின, சில சமயங்களில் ஸ்டாக்கருக்கு உண்மையிலேயே உலகளாவிய மாற்றங்களைச் செய்தன.

    மிகவும் பிரபலமானது AMK திட்டம், இது இல்லாமல் அனுபவமுள்ள விளையாட்டாளர்கள் இப்போது "செர்னோபிலின் நிழல்" முடிக்க பரிந்துரைக்கவில்லை. சில மோட்கள் மிகவும் வெற்றிகரமாக இருந்தன, சில அவ்வளவு இல்லை. ஆனால் கிட்டத்தட்ட எல்லாவற்றிலும் XRay இன்ஜின் பிழை உள்ளது. "கால் ஆஃப் ப்ரிபியாட்" இந்த கேமிற்கு மிகக் குறைவான மோட்கள் இருப்பதால் இந்த நிகழ்வுக்கு மிகவும் குறைவாகவே பாதிக்கப்படுகிறது.

    எனவே, நீங்கள் ஒரு MOD ஐப் பயன்படுத்துகிறீர்கள் என்றால், ஒரே ஒரு வழி மட்டுமே உள்ளது - அதன் டெவலப்பருடன் நேரடியாகத் தொடர்புகொள்வது அல்லது நூற்றுக்கணக்கான மன்றங்களின் பக்கங்களைப் பார்ப்பது, வீரர்கள் சில நேரங்களில் நல்ல வீட்டில் தயாரிக்கப்பட்ட "பேட்ச்களை" இடுகையிடும், சில நிபந்தனைகளின் கீழ், உண்மையில் அகற்ற முடியும். இந்த பிழை. நிச்சயமாக, இதை நீங்கள் எப்போதும் நம்ப முடியாது, ஏனெனில் எக்ஸ்ரே எஞ்சின் (குறிப்பாக "கால் ஆஃப் ப்ரிபியாட்") விஷயத்தில், எதையும் உறுதியாகச் சொல்வது கடினம்.

    ஏமாற்றுபவர்கள்

    சில நிலைகளை மிகவும் கடினமாகக் கருதும் மற்ற வீரர்கள், பெரும்பாலும் ஏமாற்றுக்காரர்களால் அதிகமாகக் கொண்டு செல்லப்படுவார்கள், இதன் உதவியுடன் அவர்கள் தங்களுக்கு வரம்பற்ற ஆயுதங்கள் மற்றும் உபகரணங்களை உருவாக்க முடியும், மேலும் சிறந்த கலைப்பொருட்களை தங்கள் வசம் பெறலாம்.

    வழக்கம் போல் எல்லாவற்றுக்கும் பணம் கொடுக்க வேண்டும். இந்த குறிப்பிட்ட வழக்கில், ஸ்டாக்கரில் XRay எஞ்சின் பிழை ஒவ்வொரு சில வினாடிகளிலும் தோன்றத் தொடங்கும் போது, ​​நிரல் நிலைத்தன்மையின் இழப்பில் இது வெளிப்படுத்தப்படுகிறது. இது நடந்தால், ஏமாற்றுபவரின் வேறு பதிப்பைத் தேட முயற்சிக்கவும். அதிர்ஷ்டவசமாக, இன்று அவை இணையத்தில் ஆயிரக்கணக்கான பிரதிகளில் காணப்படுகின்றன. இறுதியாக, கடினமான நிலையை நேர்மையாக கடக்க முயற்சி செய்யுங்கள்! ஒருவேளை இந்த வழியில் நீங்கள் விளையாட்டிலிருந்து அதிக மகிழ்ச்சியைப் பெறுவீர்கள்.

    "ஷாமனிசம்"

    ஐயோ, மிகவும் தர்க்கரீதியான மற்றும் சரியானது, முதல் பார்வையில், இந்த விளையாட்டு இயந்திரத்திற்கு வரும்போது முறைகள் தோல்வியடைகின்றன. எடுத்துக்காட்டாக, நீங்கள் "நேட்டிவ்" ரெசல்யூஷனுடன் விளையாடவில்லை என்றால், இந்த பிழைக்கான காரணம் இதுவாக இருக்கலாம்.

    உங்கள் மானிட்டர் தெளிவுத்திறன் 1280x1024, ஆனால் நீங்கள் 800x600 இல் விளையாட விரும்புகிறீர்களா? இதன் காரணமாக துல்லியமாக ஸ்டாக்கரில் XRay இன்ஜின் தோன்றியிருக்கலாம். தெளிவுத்திறனை சொந்தமாக மாற்றவும் (இந்த மானிட்டருக்கு பரிந்துரைக்கப்படுகிறது). சில சந்தர்ப்பங்களில், அத்தகைய எளிய நடவடிக்கை பிழையை முற்றிலுமாக அகற்ற உதவுகிறது.

    உங்கள் பக்கக் கோப்பு மிகவும் சிறியதாக அமைக்கப்படும் போது சில நேரங்களில் சிக்கல் ஏற்படும். வெறுமனே, அதன் அளவு ரேம் அளவை விட இரண்டு மடங்கு இருக்க வேண்டும்.

    ஸ்வாப் கோப்பின் அளவை அதிகரிப்பது எப்படி?

    இது உண்மையில் மிகவும் எளிதானது. இதைச் செய்ய, "எனது கணினி" மீது வலது கிளிக் செய்து, சூழல் மெனுவிலிருந்து "பண்புகள்" என்பதைத் தேர்ந்தெடுக்கவும். திறக்கும் உரையாடல் பெட்டியில், "மேம்பட்ட கணினி அமைப்புகள்" விருப்பத்தைத் தேர்ந்தெடுக்கவும். "செயல்திறன்" உருப்படியில் "விருப்பங்கள்" பொத்தானைக் கிளிக் செய்து, பின்னர் "மேம்பட்ட" தாவலைத் தேர்ந்தெடுக்கவும். பின்னர் நீங்கள் "மெய்நிகர் நினைவகம்" உருப்படியில் "மாற்று" என்பதைக் கிளிக் செய்ய வேண்டும், பின்னர் உங்களுக்குத் தேவையான மதிப்பை உள்ளிட்டு "சரி" மீது இடது கிளிக் செய்யவும்.

    எப்போதாவது, கணினியில் 512 MB நினைவகம் குறைவாக இருந்தால் விளையாட்டைத் தொடங்கலாம், ஆனால் நீங்கள் இதைச் செய்யக்கூடாது: XRay இன்ஜின் பிழை மற்றும் பயங்கரமான "பிரேக்குகள்" இன்னும் உங்களை விளையாட அனுமதிக்காது.

    இறுதியாக, விளையாட்டின் அம்சங்களைப் பற்றி நாம் பேச வேண்டும். தேவையற்ற படத்தை மேம்படுத்தும் விருப்பங்களை முடக்குவது நல்லது. "Stalker Call of Pripyat" என்று வரும்போது இந்த அறிக்கை குறிப்பாக உண்மை. XRay இன்ஜின் பதிப்பு 1.6.0 இல் பிளேயர் அதிகபட்ச தர அமைப்புகளை அமைக்க முயற்சித்தபோது அடிக்கடி தோன்றியது.

    மற்றும் டிரைவர்கள் பற்றி மேலும். கணினிகளில் தனித்துவமான ஆடியோ கார்டு உள்ள பயனர்களை ஒரு பிழை தாக்குவது மிகவும் அரிதானது அல்ல. அதற்கான இயக்கிகளைப் புதுப்பிக்க முயற்சிக்கவும், குறிப்பாக கடினமான சந்தர்ப்பங்களில், கண்ட்ரோல் பேனலில் இருந்து சாதனத்தை முடக்கவும். கவனம்! இதை கவனமாக செய்யுங்கள், இல்லையெனில் உங்கள் கணினியில் உள்ள அனைத்து ஒலிகளையும் இழக்க நேரிடும்.

    எங்கள் முழு கதையின் முடிவில் நாம் என்ன சொல்ல முடியும்? புதிய கேம் பதிவுகளை அமைப்பதில் எந்தப் பிழையும் உங்களைத் தடுக்காது என்று நாங்கள் விரும்புகிறோம்! இந்த விஷயத்தில் எங்கள் பரிந்துரைகள் உங்களுக்கு உதவும் என்று நம்புகிறோம்.