Публикации по теме 'unsafe'


[] байт против строки в Go
По сути, байт [] - это просто так: type slice struct { data uintptr len int cap int } А строка, по сути, такова: type string struct { data uintptr len int } [] байт и строка - это небольшие заголовки, указывающие на данные, длина которых указывает, сколько данных присутствует. [] байт имеет две длины: текущую длину данных и емкость. Емкость говорит нам, сколько еще байтов мы можем добавить к данным, прежде чем потребуется получить больший кусок памяти. Итак,..

Вопросы по теме 'unsafe'

Почему этот код работает без ключевого слова unsafe?
В ответе на его собственный спорный вопрос , Mash показал, что вам не нужно ключевое слово "unsafe" для чтения и записи непосредственно в байты любого экземпляра объекта .NET. Вы можете объявить следующие типы:...
1601 просмотров
schedule 31.05.2023

С#: преобразовать общий указатель в массив
Я хочу преобразовать byte* в byte[] , но я также хочу иметь многоразовую функцию для этого: public unsafe static T[] Create<T>(T* ptr, int length) { T[] array = new T[length]; for (int i = 0; i < length; i++) array[i]...
14865 просмотров
schedule 08.02.2023

Почему я получаю сообщение об ошибке. Небезопасный код может появиться только при компиляции с / unsafe?
Почему я получаю следующую ошибку? Небезопасный код может появиться только при компиляции с / unsafe "? Я работаю на C # и Visual Studio 2008 для программирования на Windows CE.
144422 просмотров
schedule 03.07.2023

Должен ли я смешивать свой безопасный код с моим небезопасным кодом?
Я работаю над проектом, который использует кучу вызовов API WIN32 и требует некоторого небезопасного кода. С точки зрения передовой практики, должен ли я изолировать этот код в собственной DLL, скомпилированной с ключом /unsafe, сохраняя при этом...
800 просмотров
schedule 03.04.2023

Могу ли я использовать dll С# с небезопасным кодом в VB.NET?
Существует класс FastBitmap для C#, который позволяет вам получать и изменять информацию о пикселях растрового изображения. Я уже использовал его в каком-то проекте С#, но сейчас он мне нужен в VB.NET. Проблема в том, что этот класс использует...
1776 просмотров
schedule 10.05.2024

C# Реализация пользовательского класса в стиле потоковой записи
Как мне написать свой собственный класс манипулятора потока? В основном то, что я пытаюсь обернуть, - это сохранить ссылку на базовый поток в писателе. Например, при записи в поток памяти с помощью StreamWriter, когда выполняется Write(),...
3143 просмотров
schedule 17.02.2023

Есть ли разница между нулем и 0 при назначении указателям в небезопасном коде?
Это может показаться странным, но в C (size_t) (void *) 0 == 0 не гарантируется спецификацией языка. Компиляторам разрешено использовать любое значение, которое они хотят для null (хотя они почти всегда используют 0.) В C # вы можете присвоить...
1162 просмотров
schedule 17.06.2023

Преобразование из void* в объект в C#
В проекте C# мне нужно передать параметры объекта, поместив ссылки в структуру. т. е. у меня есть структура, переданная диспетчеру struct SOMESTRUCT { public int lpObject; } Где lpObject содержит указатель на пользовательский объект,...
3728 просмотров
schedule 22.02.2023

Вызов функции C++ из C# — несбалансированный стек
У меня есть неуправляемая функция C++ со следующей подписью: int function(char* param, int ret) Я пытаюсь вызвать его из С#: unsafe delegate int MyFunc(char* param, int ret); ... int Module =...
3236 просмотров
schedule 01.04.2023

Преобразование System.Decimal в System.Guid
У меня есть большой словарь, где ключ десятичный, но GetHashCode() для System.Decimal катастрофически плохой. Чтобы подтвердить свою догадку, я запустил цикл for со 100 000 соседних десятичных знаков и проверил распределение. 100 000 различных...
4257 просмотров
schedule 18.06.2023

Максимальная длина байта []?
Я пытаюсь создать массив из byte , длина которого равна UInt32.MaxValue . Этот массив по сути представляет собой небольшую (ish) базу данных в памяти: byte[] countryCodes = new byte[UInt32.MaxValue]; Однако на моей машине во время...
52922 просмотров
schedule 12.03.2022

Возможны ли эффективные массивы фиксированного размера без использования небезопасного кода в .NET?
Существует ли хороший способ реализации массива фиксированного размера в .NET, не требующий небезопасного кода? Моя цель - создать тип значения, который представляет массив фиксированного размера, который может быть встроен (включен как член) в...
2206 просмотров
schedule 02.02.2024

Использование Action‹PointerClass*› в качестве аргумента
Я создаю критически важное для производительности приложение, которое реализует манипулирование изображениями. Я использую некоторые указатели пикселей, используя свою структуру с именем Pixel для некоторой обработки. У меня есть много частей...
1138 просмотров
schedule 08.05.2023

Маскирование растровых изображений C # с использованием небезопасного кода
Я использую следующий код для создания масок изображений на C #: for(int x = 0; x < width; x++) { for(int y = 0; y < height; y++) { bmp.SetPixel(x,y,Color.White); } } for(int x = left; x < width; x++) { for(int y...
9170 просмотров
schedule 22.08.2022

Как определить размер экземпляра?
Я настроил свой проект на прием небезопасного кода и имею следующий вспомогательный класс для определения размера экземпляра: struct MyStruct { public long a; public long b; } public static class CloneHelper {...
1304 просмотров
schedule 31.05.2022

C# — фиксированные/встроенные массивы
Я пишу реализацию B+-дерева на C#, и реализация дерева, которую я выбрал для своего приложения, имеет очень специфическую структуру, которая учитывает кэш. Для достижения этих свойств у него есть строгие политики компоновки узлов дерева. То, что я...
1229 просмотров
schedule 11.05.2023

Почему JNI вызывает нативные методы медленнее, чем аналогичные методы в sun.misc.Unsafe?
Я разрабатываю реализацию JNI, аналогичную sun.misc.Unsafe, но с расширенным управлением памятью. Почему время вызова нативных методов из sun.misc.Unsafe и из моей разработанной библиотеки сильно различается? Некоторые цифры:...
2817 просмотров

Получить адрес первого элемента массива, хранящегося как объект
Мне нужно получить адрес памяти первого элемента массива произвольного типа, который хранится как тип объекта. Например, массив может быть типа double[] или int[], но в коде он будет напечатан как Object. Хотя получить адрес массива известного...
2351 просмотров
schedule 09.09.2022

Инициализация указателя структуры в C#
unsafe public class Temp { public struct Node { Node *left; Node *right; int value; } public Temp() { Node* T=new Node(); T->left=null; T->right=null; T->value=10;...
16755 просмотров
schedule 04.03.2023

Небезопасный метод получения указателя на массив байтов
будет ли это поведение действительным в С# public class MyClass { private byte[] data; public MyClass() { this.data = new byte[1024]; } public unsafe byte* getData() { byte* result = null; fixed...
9939 просмотров
schedule 23.03.2023