ბევრი პროგრამირების ენა, როგორიცაა C, არასოდეს შეასრულოთ საზღვრების ავტომატური შემოწმება სიჩქარის ასამაღლებლად. თუმცა, ეს ტოვებს უამრავ შეცდომებს და ბუფერულ გადადინებას დაუკავებელია. ბევრი პროგრამისტი თვლის, რომ ეს ენები ძალიან ბევრს სწირავენ სწრაფ შესრულებას.
შეკრული შემოწმება ხდება მასივში?
რეზიუმე. მასივის შეკრული შემოწმება ეხება -ს იმის დადგენას, არის თუ არა პროგრამაში მასივის ყველა მითითება მათ გამოცხადებულ დიაპაზონში. ეს შემოწმება გადამწყვეტია პროგრამული უზრუნველყოფის შემოწმებისა და ვალიდაციისთვის, რადგან მასივების გამოწერამ მათი დეკლარირებული ზომების მიღმა შეიძლება გამოიწვიოს მოულოდნელი შედეგები, უსაფრთხოების ხვრელები ან წარუმატებლობები.
რატომ არ აქვს C-ს საზღვრების შემოწმება?
ეს განპირობებულია იმით, რომ C++ არ ამოწმებს საზღვრებს. … C++ დიზაინის პრინციპი იყო, რომ ის არ უნდა იყოს ნელი ვიდრე ექვივალენტური C კოდი და C არ ამოწმებს მასივის საზღვრებს. ასე რომ, თუ თქვენ ცდილობთ შეხვიდეთ ამ მეხსიერებაში საზღვრებს გარეთ, თქვენი პროგრამის ქცევა განუსაზღვრელია, რადგან ეს დაწერილია C++ სტანდარტში.
შემოწმებულია თუ არა C მასივის ინდექსები გაშვების დროს?
ნამდვილი პრობლემა ის არის, რომ C და C++ იპლემენტაციები, როგორც წესი, არ ამოწმებენ საზღვრებს (არც კომპილაციის დროს და არც გაშვების დროს). მათ ამის სრული უფლება აქვთ. ამაში ენას ნუ დააბრალებთ.
რა მოხდება, თუ მასივი გადის საზღვრებს C-ში?
ArrayIndexOutOfBoundsException შეიძლება მოხდეს, თუ მასივზე წვდომა ხდება საზღვრებს გარეთ. მაგრამC-ში არ არის ასეთი ფუნქციონირება და შეიძლება განვითარდეს განუსაზღვრელი ქცევა, თუ მასივს საზღვრებს გარეთ წვდება. პროგრამა, რომელიც ამას აჩვენებს C-ში, მოცემულია შემდეგნაირად.