Что такое intptr zero

Что такое IntPtr?

Используя IntelliSense и просматривая чужой код, я наткнулся на этот тип IntPtr ; каждый раз, когда его нужно было использовать, я просто вставлял null или IntPtr.Zero и обнаруживал, что большинство функций работают. Что это такое и когда / почему используется?

8 ответов

Это тип значения, достаточно большой для хранения адреса памяти, который используется в машинном или небезопасном коде, но не может напрямую использоваться в качестве адреса памяти в безопасном управляемом коде.

Я пишу программу на C #, которая взаимодействует с высокоскоростной камерой. У камеры есть собственный драйвер, который получает изображения и автоматически загружает их в память компьютера.

Поэтому, когда я готов добавить последнее изображение в свою программу для работы, драйвер камеры предоставляет мне IntPtr, где изображение УЖЕ хранится в физической памяти, поэтому мне не нужно тратить время / ресурсы на создание другого блок памяти для хранения изображения, которое уже находится в памяти. IntPtr просто показывает мне, где уже находится изображение.

Прямая интерпретация

Размер IntPtr зависит от платформы, но эту деталь редко нужно учитывать, поскольку система автоматически использует правильный размер.

Альтернативная перспектива

Что такое указатель?

Указатель можно рассматривать как своего рода закладку. За исключением того, что вместо того, чтобы использоваться для быстрого перехода к странице в книге, указатель используется для отслеживания или отображения блоков памяти.

Представьте себе память вашей программы как один большой массив из 65535 байт.

Указатели послушно указывают

Указатели запоминают каждый адрес памяти, и поэтому каждый указывает на один адрес в памяти.

Как группа, указатели запоминают и вызывают адреса памяти, подчиняясь каждой вашей команде до тошноты.

Указатели в C #

Также специфичны для C #, указатели имеют тип int и, следовательно, подписаны.

Однако вы не можете использовать адреса с отрицательной нумерацией, как и вы не можете получить доступ к адресу выше 65534. Любая попытка сделать это вызовет исключение System.AccessViolationException.

Указатель под названием MyPointer объявляется так:

С острыми предметами следует обращаться с особой осторожностью

Указатели дают программисту жесткий контроль над системой. Поэтому допущенные ошибки могут иметь более серьезные последствия.

Чтобы использовать указатели, небезопасный код должен быть включен в свойствах вашей программы, а указатели должны использоваться исключительно в методах или блоках, отмеченных как небезопасные.

Пример небезопасной блокировки

Как использовать указатели

Когда переменные или объекты объявляются или создаются, они сохраняются в памяти.

После того, как адрес назначен указателю, применяется следующее:

MyPointer = &MyVariable; // Set MyPointer to point at MyVariable

«MyPointer is pointing at » + *MyPointer;

Пример осторожного и ответственного использования указателей

Почему это int вместо uint?

Нет веской причины.

Зачем нужны указатели?

Используйте указатели для чтения блоков памяти и отслеживания изменения значений, на которые они указывают, с течением времени.

Изменяйте эти значения ответственно и отслеживайте, как ваши изменения повлияют на ваш компьютер.

Тип IntPtr разработан как целое число, размер которого зависит от платформы. То есть ожидается, что экземпляр этого типа будет 32-битным на 32-битном оборудовании и операционных системах и 64-битным на 64-битном оборудовании и операционных системах.

Тип IntPtr может использоваться языками, поддерживающими указатели, и как обычное средство обращения к данным между языками, которые поддерживают и не поддерживают указатели.

Объекты IntPtr также могут использоваться для удержания дескрипторов. Например, экземпляры IntPtr широко используются в классе System.IO.FileStream для хранения дескрипторов файлов.

Первая строка гласит:

Зависящий от платформы тип, который используется для представления указателя или дескриптора.

Что касается указателя или дескриптора, страница продолжает указывать:

Тип IntPtr может использоваться языками, поддерживающими указатели, и как обычное средство обращения к данным между языками, которые поддерживают и не поддерживают указатели.

Объекты IntPtr также могут использоваться для удержания дескрипторов. Например, экземпляры IntPtr широко используются в классе System.IO.FileStream для хранения дескрипторов файлов.

Дескриптор может быть идентификатором объекта и передается между методами / классами, когда обе стороны нуждаются в доступе к этому объекту.

Источник

Просто что такое IntPtr?

Используя IntelliSense и глядя на код других людей, я столкнулся с этим типом IntPtr ; каждый раз, когда это нужно было использовать, я просто положил null или IntPtr.Zero и нашел большинство функций для работы. Что именно это и когда/почему оно используется?

ОТВЕТЫ

Ответ 1

Ответ 2

Это тип значения, достаточно большой для хранения адреса памяти, используемого в собственном или небезопасном коде, но не используемого непосредственно в качестве адреса памяти в безопасном управляемом коде.

Ответ 3

Я пишу программу на С#, которая взаимодействует с высокоскоростной камерой. У камеры есть свой собственный драйвер, который приобретает изображения и автоматически загружает их в память компьютера.

Итак, когда я готов принести последнее изображение в свою программу для работы, драйвер камеры предоставит мне IntPtr, где изображение будет УЖЕ сохранено в физической памяти, поэтому мне не нужно тратить время/ресурсы создают еще один блок памяти для хранения изображения, которое уже в памяти. IntPtr просто показывает мне, где изображение уже есть.

Ответ 4

Прямая интерпретация

Размер IntPtr зависит от платформы, но эту деталь редко нужно учитывать, поскольку система автоматически использует правильный размер.

Альтернативная перспектива

Ответ 5

Что такое указатель?

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

Указатель можно рассматривать как своего рода книжный знак. Кроме того, вместо того, чтобы быстро перейти к странице в книге, указатель используется для отслеживания или отображения блоков памяти.

Представьте свою память программ точно как один большой массив из 65535 байт.

Указатели указывают послушно

Указатели запоминают один адрес памяти каждый, и поэтому каждый указывает на один адрес в памяти.

В качестве группы указатели запоминают и запоминают адреса памяти, подчиняясь каждой вашей рекламной паузе.

Указатели в С#

В частности, в С# указатель представляет собой целочисленную переменную, которая хранит адрес памяти от 0 до 65534.

Также, для С#, указатели имеют тип int и поэтому подписываются.

Вы не можете использовать отрицательно пронумерованные адреса, хотя вы также не можете получить доступ к адресу выше 65534. Любая попытка сделать это вызовет исключение System.AccessViolationException.

Указатель, называемый MyPointer, объявляется следующим образом:

Пояснительные вещи следует обрабатывать с особой осторожностью

Указатели дают программисту жесткий контроль над системой. Поэтому сделанные ошибки могут иметь более серьезные последствия.

Чтобы использовать указатели, в ваших программных свойствах должен быть включен небезопасный код, а указатели должны использоваться исключительно в методах или блоках, помеченных как небезопасные.

Пример небезопасного блока

Как использовать указатели

Когда переменные или объекты объявляются или создаются, они сохраняются в памяти.

Как только адрес присваивается указателю, применяется следующее:

MyPointer = &MyVariable; // Set MyPointer to point at MyVariable

«MyPointer is pointing at » + *MyPointer;

Поскольку указатель представляет собой переменную, которая содержит адрес памяти, этот адрес памяти может быть сохранен в переменной указателя.

Пример использования указателей тщательно и ответственно

Почему это int вместо uint?

Нет веской причины.

Зачем использовать указатели?

Указатели очень забавны. Поскольку большая часть компьютера управляется памятью, указатели предоставляют программисту больше контроля над их программной памятью.

Мониторинг памяти.

Используйте указатели для чтения блоков памяти и отслеживайте, как значения, указывающие на изменение во времени.

Измените эти значения ответственно и отслеживайте, как ваши изменения влияют на ваш компьютер.

Ответ 6

Тип IntPtr предназначен для целое число, размер которого платформы. То есть, экземпляр этого типа ожидается быть 32-битным на 32-разрядном оборудовании и операционных систем и 64-битных 64-разрядные аппаратные и операционные системы.

Тип IntPtr может использоваться языки, поддерживающие указатели, и как общий способ обращения к данным между языками, которые делают и не делают указатели поддержки.

Объекты IntPtr также могут использоваться для удерживайте ручки. Например, примеры IntPtr широко используются в Класс System.IO.FileStream для хранения файловые дескрипторы.

Ответ 7

Первая строка гласит:

Специфичный для платформы тип, который используется для представления указателя или дескриптора.

Что касается указателя или дескриптора, то страница переходит в состояние:

Тип IntPtr может использоваться языками, которые поддерживают указатели, и в качестве общего средства обращения к данным между языками, которые поддерживают и не поддерживают указатели.

Объекты IntPtr также можно использовать для хранения дескрипторов. Например, экземпляры IntPtr широко используются в классе System.IO.FileStream для хранения файловых дескрипторов.

Дескриптор может быть идентификатором объекта и передается между методами/классами, когда обеим сторонам необходим доступ к этому объекту.

Ответ 8

Источник

Что такое IntPtr именно?

С помощью IntelliSense и глядя на код других людей, я столкнулся с этим IntPtr тип; каждый раз, когда он должен был быть использован я просто поставил null или IntPtr.Zero и нашел большинство функций для работы. Что именно это такое и когда/почему оно используется?

7 ответов:

это » родной (специфичный для платформы) размер целого числа.»Это внутренне представлено как void* но представляется как целое число. Вы можете использовать его всякий раз, когда вам нужно хранить неуправляемый указатель и не хотите использовать unsafe код. IntPtr.Zero эффективно NULL (нулевой указатель).

Это тип значения, достаточно большой для хранения адреса памяти, используемого в собственном или небезопасном коде, но не может непосредственно использоваться в качестве адреса памяти в безопасном управляемом коде.

можно использовать IntPtr.Size чтобы узнать, работаете ли вы в 32-битном или 64-битном процессе, так как это будет 4 или 8 байт соответственно.

Я пишу программу на C#, которая взаимодействует с высокоскоростной камеры. Камера имеет свой собственный драйвер, который получает изображения и загружает их в память компьютера автоматически.

поэтому, когда я готов принести последнее изображение в свою программу для работы, драйвер камеры предоставляет мне IntPtr туда, где изображение уже хранится в физической памяти, поэтому мне не нужно тратить время / ресурсы на создание другого блока памяти сохраните изображение, которое уже находится в памяти. IntPtr просто показывает мне, где изображение уже есть.

прямой перевод

An IntPtr это целое который имеет тот же размер, что и указатель.

размер IntPtr зависит от платформы, но эту деталь редко нужно учитывать, так как система автоматически будет использовать правильный размер.

имя «IntPtr» сбивает с толку-что-то вроде Handle было бы более уместно. Моя первоначальная догадка заключалась в том, что» IntPtr » был указателем до целое число. Элемент документация MSDN указателя IntPtr входит в несколько загадочные детали, никогда не давая много понимания о значении имени.

альтернативную точку зрения

An IntPtr указатель с двумя ограничениями:

во всех языках указатель-это тип переменной, которая хранит адрес памяти, и вы можете либо попросить их сообщить вам адрес они указывают на или значение по адресу они указывают на.

указатель можно рассматривать как своего рода книжный знак. За исключением того, что вместо быстрого перехода на страницу в книге используется указатель для отслеживания или отображения блоков память.

представьте себе память вашей программы точно так же, как один большой массив 65535 байт.

указатели указывают послушно

указатели запоминают один адрес памяти каждый, и поэтому каждый из них указывает на один адрес в памяти.

как группа, указатели запоминают и вспоминают адреса памяти, подчиняясь каждой вашей команде до тошноты.

указатели в C#

в частности, в C# указатель представляет собой целочисленную переменную, которая хранит адрес памяти между 0 и 65534.

также специфично для C#, указатели имеют тип int и поэтому подписаны.

вы не можете использовать отрицательно пронумерованные адреса, хотя и не можете получить доступ к адресу выше 65534. Любая попытка сделать это бросит систему.AccessViolationException.

указатель под названием MyPointer объявляется как Итак:

указатель в C# является int, но адреса памяти в C# начинаются с 0 и простираются до 65534.

заостренные вещи должны быть обработаны с особой осторожностью

слово небезопасных и предназначен для того, чтобы напугать вас, и по очень веской причине: указатели-это заостренные вещи, а заостренные вещи, например, мечи, топоры, указатели и т. д. следует относиться с особенным уход.

указатели дают программисту жесткий контроль над системой. Поэтому ошибки могут иметь более серьезные последствия.

чтобы использовать указатели, небезопасный код должен быть включен в свойствах вашей программы, а указатели должны использоваться исключительно в методах или блоках, помеченных как небезопасные.

пример небезопасного блока

как использовать указатели

когда переменные или объекты объявляются или создаются экземпляры, они хранятся в памяти.

после присвоения указателю адреса применяется следующее:

MyPointer = &MyVariable; // Set MyPointer to point at MyVariable

«MyPointer is pointing at » + *MyPointer;

поскольку указатель-это переменная, содержащая адрес памяти, этот адрес памяти может быть сохранен в переменной указателя.

пример использования указателей тщательно и ответственно

обратите внимание, что тип указателя-int. Это потому, что C# интерпретирует адреса памяти как целые числа (int).

почему это int вместо uint?

зачем использовать указатели?

указатели очень весело. Поскольку большая часть компьютера управляется памятью, указатели позволяют программисту больше контролировать память своей программы.

Контроль памяти.

использовать указатели для чтения блоков памяти и контролируйте, как значения, на которые указывают, изменяются с течением времени.

измените эти значения ответственно и следите за тем, как ваши изменения влияют на ваш компьютер.

тип IntPtr конструирован для того чтобы быть целое число, размер которого платформы. То есть ожидается, что экземпляр этого типа быть 32-битным на 32-битном оборудовании и операционных систем и 64-бит на 64-разрядное оборудование и операционные системы.

тип IntPtr можно использовать мимо языки, которые поддерживают указатели, и как общее средство ссылки на данные между языками, которые делают и не делают поддержка указателей.

объекты IntPtr также могут быть использованы для держите ручки. Например, экземпляры указателя IntPtr широко используются в Системы.ИО.Класс FileStream держать дескриптор файла.

тип IntPtr является CLS-совместимым, в то время как тип UIntPtr не является. Только тип IntPtr используется в общем языковая среда выполнения. Тип UIntPtr является в основном для поддержания архитектурная симметрия с IntPtr тип.

первая строка гласит:

тип платформы, используемый для представления указателя или дескриптора.

Что касается указателя или дескриптора, страница переходит к состоянию:

тип IntPtr может быть использован языки, которые поддерживают указатели, и как общее средство ссылки на данные между языками, которые делают и не делают поддержка указатели.

объекты IntPtr также могут быть использованы для держите ручки. Например, экземпляры указателя IntPtr широко используются в Системы.ИО.Класс FileStream держать дескриптор файла.

указатель-это ссылка на область памяти, которая содержит некоторые данные, которые вас интересуют.

дескриптор может быть идентификатором объекта и передается между методов/классов, когда обе стороны должны получить доступ к этому объекту.

Источник

Что такое IntPtr?

используя IntelliSense и глядя на код других людей, я столкнулся с этим IntPtr тип; каждый раз, когда его нужно было использовать, я просто поставил null или IntPtr.Zero и нашел большинство функций для работы. Что это такое и когда / почему оно используется?

7 ответов

это » собственное (специфичное для платформы) целое число размера.»Это внутренне представлено как void* но представляется как целое число. Вы можете использовать его, когда вам нужно сохранить неуправляемый указатель и не хотите использовать unsafe код. IntPtr.Zero эффективно NULL (нулевой указатель).

Это тип значения, достаточно большой для хранения адреса памяти, используемого в собственном или небезопасном коде, но не используемый напрямую в качестве адреса памяти в безопасном управляемом коде.

можно использовать IntPtr.Size чтобы узнать, работаете ли вы в 32-битном или 64-битном процессе, так как это будет 4 или 8 байт соответственно.

Я пишу программу на C#, которая взаимодействует с высокоскоростной камеры. Камера имеет свой собственный драйвер, который получает изображения и загружает их в память компьютера автоматически.

поэтому, когда я готов принести последнее изображение в мою программу для работы, драйвер камеры предоставляет мне IntPtr, где изображение уже хранится в физической памяти, поэтому мне не нужно тратить время / ресурсы на создание другого блока памяти для храните образ, который уже есть в памяти. IntPtr просто показывает мне, где изображение уже есть.

прямой перевод

An IntPtr это целое который имеет тот же размер, что и указатель.

размер IntPtr зависит от платформы, но эту деталь редко нужно учитывать, так как система автоматически будет использовать правильный размер.

альтернативную точку зрения

An IntPtr указатель с двумя ограничениями:

что такое указатель?

на всех языках, указатель-это тип переменной, которая хранит адрес в памяти, и вы можете либо попросите их сказать вам адрес они указывают на или значение по адресу они указывают на.

указатель можно рассматривать как своего рода книжный знак. За исключением того, что вместо быстрого перехода на страницу в книге указатель используется для отслеживания или отображения блоков память.

представьте память вашей программы точно как один большой массив 65535 байт.

указатели указывают послушно

указатели запоминают по одному адресу памяти, и поэтому каждый из них указывает на один адрес в памяти.

как группа, указатели запоминают и запоминают адреса памяти, подчиняясь каждой вашей команде до тошноты.

указатели в В C#

в частности, в C# указатель представляет собой целочисленную переменную, которая хранит адрес памяти между 0 и 65534.

также специфично для C#, указатели имеют тип int и, следовательно, подписаны.

вы не можете использовать отрицательно пронумерованные адреса, хотя и не можете получить доступ к адресу выше 65534. Любая попытка сделать это приведет к сбою системы.Как AccessViolationException.

указатель под названием MyPointer объявляется как Итак:

указатель в C# является int, но адреса памяти в C# начинаются с 0 и простираются до 65534.

заостренные вещи должны обрабатываться с особой осторожностью

слово небезопасных is предназначен для того, чтобы напугать вас, и по очень веской причине: указатели-это острые вещи, и острые вещи, например, мечи, топоры, указатели и т. д. следует относиться с особенным уход.

указатели дают программисту жесткий контроль над системой. Поэтому ошибки могут иметь более серьезные последствия.

чтобы использовать указатели, небезопасный код должен быть включен в свойствах вашей программы, а указатели должны использоваться исключительно в методах или блоках, помеченных как небезопасные.

пример небезопасного блока

как использовать указатели

когда переменные или объекты объявляются или создаются экземпляры, они хранятся в памяти.

как только адрес назначен указателю, применяется следующее:

MyPointer = &MyVariable; // Set MyPointer to point at MyVariable

«MyPointer is pointing at » + *MyPointer;

поскольку указатель-это переменная, содержащая адрес памяти, этот адрес памяти может храниться в переменной указателя.

пример использования указателей тщательно и ответственно

обратите внимание, что тип указателя-int. Это потому, что C# интерпретирует адреса памяти как целые числа (int).

почему это int вместо uint?

зачем использовать указатели?

указатели очень весело. Поскольку большая часть компьютера контролируется памятью, указатели дают программисту больше возможностей контролировать память своей программы.

Контроль памяти.

использовать указатели для чтения блоков памяти и контролируйте, как значения, на которые указывают, меняются с течением времени.

измените эти значения ответственно и следите за тем, как ваши изменения влияют на ваш компьютер.

тип IntPtr конструирован для того чтобы быть целое число, размер которого платформы. То есть ожидается, что экземпляр этого типа быть 32-бит на 32-битном оборудовании и операционные системы и 64-разрядные 64-разрядное оборудование и операционные системы.

тип IntPtr может использоваться языки, поддерживающие указатели, и в качестве общего средства ссылки на данные между языками, которые делают и не делают поддержка указателей.

объекты IntPtr также могут использоваться для держите ручки. Например, экземпляры IntPtr использованы обширно в Система.ИО.Класс FileStream для хранения дескриптор файла.

тип IntPtr CLS-совместимый, в то время как тип UIntPtr не является. Только тип IntPtr используется в общем среда CLR. Тип UIntPtr является в основном для поддержания архитектурная симметрия с IntPtr тип.

первая строка гласит:

специфичный для платформы тип, используемый для представления указателя или дескриптора.

как указатель или дескриптор страницы гласит:

тип IntPtr может использоваться языки, поддерживающие указатели, и в качестве общего средства ссылки на данные между языками, которые делают и не делают поддержка указатели.

объекты IntPtr также могут использоваться для держите ручки. Например, экземпляры IntPtr использованы обширно в Система.ИО.Класс FileStream для хранения дескриптор файла.

указатель-это ссылка на область памяти, которая содержит некоторые данные, которые вас интересуют.

дескриптор может быть идентификатором объекта и передается между методов/классов, когда обе стороны должны получить доступ к этому объекту.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *