русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Небезпечний код


Дата додавання: 2015-01-08; переглядів: 916.


Однією з основних переваг мови С# є його схема роботи з пам'яттю: автоматичне виділення пам'яті під об'єкти і автоматичне прибирання сміття. При цьому неможливо звернутися за неіснуючою адресою пам'яті або вийти за межі масиву, що робить програми надійнішими і безпечнішими і унеможливлює появи цілого класу помилок.

Проте в деяких випадках виникає необхідність працювати з адресами пам'яті безпосередньо, наприклад, при взаємодії з операційною системою, написанні драйверів або програм, час виконання яких критично. Таку можливість надає так званий небезпечний (unsafe) код.

Небезпечним називається код, виконання якого середовище CLR не контролює. Він працює безпосередньо з адресами областей пам'яті за допомогою вказівок і має бути явним чином помічений за допомогою ключового слова unsafe, яке визначає так званий небезпечний контекст виконання.

Ключове слово unsafe може використовуватись або як спецификатор, або як оператор. У першому випадку його указують разом з іншими специфікаторами при описі класу, делегата, структури, методу, поля і так далі - скрізь, де допустимі інші специфікатори. Наприклад:

 

public unsafe struct Node

{

public int Value; .

public Node* Left;

public Node* Right;

}

 

Вся структура Node позначається як небезпечна, що робить можливим використання в ній вказівок Left і Right. Можна застосувати і інший варіант опису, в якому небезпечними оголошуються тільки відповідні поля структури:

public struct Node

{

public int Value;

public unsafe Node* Left;

public unsafe Node* Right;

}

Оператор unsafe має наступний синтаксис:

 

unsafe блок

 

Всі оператори, що входять в блок, виконуються в небезпечному контексті.

Компіляція кода, що містить небезпечні фрагменти, повинна проводитися з ключем /unsafe. Цей режим можна встановити шляхом налаштування середовища Visual Studio (Project ► Properties ► Configuration Properties ► Build ► Allow Unsafe Code).

 


<== попередня лекція | наступна лекція ==>
Рекомендації по програмуванню | Синтаксис вказівок


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн