Дата  Запланированые курсы
30.07 Рисование на компьютере при помощи планшета (базовый курс)
30.07 Adobe After Effects. Создание анимации и эффектов
13.08 Средства векторной графики. Adobe Illustrator
27.08 Поисковая оптимизация (SEO)
03.09 Введение в тестирование программного обеспечения
10.09 DEV-J-MP+. Расширенная комплексная программа "Разработчик прикладного программного обеспечения (Язык Java)"
10.09 DEV-J10. Программирование на платформе Java. Введение в язык Java
10.09 MOC-20740B. Установка, Хранение и Вычисления с Windows Server 2016
10.09 Поисковая оптимизация (SEO) для профессионалов
10.09 DEV-J-CP. Комплексная программа "Разработчик прикладного программного обеспечения (Язык Java)"
10.09 Поисковая оптимизация (SEO) для профессионалов
10.09 Компьютерное проектирование в системе AutoCAD (базовый курс)
10.09 MOC-10985. Введение в базы данных SQL
10.09 Основы создания веб-сайтов. Adobe Dreamweaver
10.09 DEV-C22. Стандарт С++11, С++14, С++17 для прикладного программирования
17.09 MOC-20761. Создание запросов данных при помощи Transact-SQL
17.09 DEV-J20. Программирование на платформе Java. Стандартные пакеты
17.09 Средства растровой графики. Adobe Photoshop
24.09 DEV-J30. Программирование на платформе Java. Разработка многоуровневых приложений
24.09 MOC-20741B. Сетевая инфраструктура на основе Windows Server 2016
01.10 MOC-20762. Разработка баз данных SQL
01.10 Компьютерное проектирование в системе AutoCAD (базовый курс)
01.10 Профессиональная верстка сайтов. HTML5 и CSS3
01.10 DEV-С-CP+. Расширенная комплексная программа «Разработчик прикладного программного обеспечения (Языки С и C++)»
01.10 DEV-C10. Процедурное программирование. Языки С/C++
01.10 Основы алгоритмизации и программирования (Группа I)
01.10 Основы алгоритмизации и программирования (Группа II)
02.10 DEV-J-MP+. Расширенная комплексная программа "Разработчик прикладного программного обеспечения (Язык Java)"
02.10 DEV-J10. Программирование на платформе Java. Введение в язык Java
08.10 MOC-20764. Администрирование инфраструктуры баз данных SQL
08.10 MOC-20742B. Инфраструктура идентификации на основе Windows Server 2016
08.10 DEV-J60. Технологии разработки корпоративных приложений на платформе Java Enterprise Edition (Java EE)
08.10 Введение в тестирование программного обеспечения
08.10 QA-QAAB. Автоматизация тестирования ПО (Базовый курс)
15.10 Компьютерное проектирование в системе AutoCAD (профессиональный курс)
15.10 Средства векторной графики. Adobe Illustrator
15.10 DEV-OCPJP. Подготовка к сдаче сертификационных экзаменов серии Oracle Certified Professional Java Programmer
22.10 MOC-20744A. Безопасность инфраструктуры средствами Windows Server 2016
22.10 Введение в тестирование программного обеспечения
22.10 MOC-10987. Настройка производительности и оптимизация баз данных SQL
22.10 Основы создания веб-сайтов. Adobe Dreamweaver
24.10 NET-DLINKSW-LAB. Технологии коммутации современных сетей Ethernet. Лабораторный практикум
25.10 DEV-J20. Программирование на платформе Java. Стандартные пакеты
29.10 MOC-10961B. Автоматизация администрирования с Windows PowerShell
07.11 DEV-C20. Объектно-ориентированное программирование. Базовый уровень. Язык С++
12.11 Профессиональная верстка сайтов. HTML5 и CSS3
12.11 Компьютерное проектирование в системе AutoCAD (базовый курс)
19.11 DEV-J30. Программирование на платформе Java. Разработка многоуровневых приложений
26.11 Средства растровой графики. Adobe Photoshop
26.11 Поисковая оптимизация (SEO)
03.12 Компьютерное проектирование в системе AutoCAD (базовый курс)
03.12 DEV-C21. Объектно-ориентированное программирование. Углубленное изучение. Язык С++
10.12 Основы создания веб-сайтов. Adobe Dreamweaver
10.12 Поисковая оптимизация (SEO) для профессионалов
10.12 Средства векторной графики. Adobe Illustrator
17.12 Компьютерное проектирование в системе AutoCAD (профессиональный курс)
09.01 DEV-C22. Стандарт С++11, С++14, С++17 для прикладного программирования
14.01 DEV-OCPJP. Подготовка к сдаче сертификационных экзаменов серии Oracle Certified Professional Java Programmer
04.02 DEV-QT10. Прикладное программирование на С++ с использованием Qt. Базовый уровень
11.02 DEV-J60. Технологии разработки корпоративных приложений на платформе Java Enterprise Edition (Java EE)
11.03 Введение в тестирование программного обеспечения
11.03 Введение в тестирование программного обеспечения
Открыт набор на осенний семестр в Академию информатики для школьников Открыт набор на осенний семестр на программы второго высшего образования
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

C# safe код не всегда safe
int0x25
#1 Оставлено : 10 ноября 2010 г. 18:33:53(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 17.09.2008(UTC)
Сообщений: 90
Баллов: 270
Откуда: Russia St.Petersburg

Было скучно на работе и мы с другом решили поиграться с указателями в c# и проверить насколько же в реальности безопасен managed код.
Вот получился довольно таки забавный пример.
Код:

[StructLayout(LayoutKind.Sequential)]
class A
{
public override string ToString()
{
return "I'am type A";
}
}

[StructLayout(LayoutKind.Sequential)]
class B
{
public override string ToString()
{
return "I'am type B";
}
}

class Foo
{
static void Main()
{
A a = new A();
B b = new B();
GCHandle h = GCHandle.Alloc(a, GCHandleType.Pinned);
GCHandle hb = GCHandle.Alloc(b, GCHandleType.Pinned);
Marshal.WriteInt32((IntPtr)((int)h.AddrOfPinnedObject() - 4), Marshal.ReadInt32((IntPtr)((int)hb.AddrOfPinnedObject() - 4)));
Console.WriteLine(a);
}
}

В итоге выводится "I'am type B" [;)]
Если кратко по коду, сначала происходит фиксация объектов в памяти, чтобы они не сдвинулись при сборке мусора и указатели на них были бы валидны. И потом меняется указатель на тип А на значение указателя на тип B;
Вот так вот без строчки unsafe кода можно изменить поведение объектов.

<i><font color="green">Anyone who has never made a mistake has never tried anything new</font id="green"></i>
<i><font color="green">Anyone who has never made a mistake has never tried anything new</font id="green"></i>
Реклама
Margarita.Lukina
#2 Оставлено : 14 ноября 2010 г. 3:26:08(UTC)
Ранг: Активный Участник

Группы: Зарегистрированные пользователи
Зарегистрирован: 10.02.2006(UTC)
Сообщений: 156
Баллов: 468
Откуда: Russia Spb

<blockquote id="quote"><font size="1" face="Verdana, Helvetica, Arial" id="quote">quote:<hr height="1" noshade id="quote">
Вот так вот без строчки unsafe кода можно изменить поведение объектов.
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">
с маленьким замечанием:
msdn.microsoft.com/ru-ru/library/asx0thw2.aspx
<blockquote id="quote"><font size="1" face="Verdana, Helvetica, Arial" id="quote">quote:<hr height="1" noshade id="quote">Marshal - класс: Предоставляет коллекцию методов для <b>выделения неуправляемой памяти, копирования блоков неуправляемой памяти и преобразования управляемых типов в неуправляемые, а также прочих разнообразных методов, используемых при взаимодействии с неуправляемым кодом </b>.<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">

Margarita Lukina
Margarita Lukina
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.