草庐IT

intptr_t

全部标签

c# - 向 IntPtr 添加偏移量

我正在寻找一种在C#或.NET中执行指针操作的方法。我想做一些很简单的事情有一个IntPtr指针,我想获得指向前面2个字节的IntPtr对象。我读了一些帖子说这个愚蠢的代码片段会起作用......IntPtrptr=newIntPtr(oldptr.ToInt32()+2);但我怀疑这个声明是否也适用于64位机器(因为那里的寻址是64位的)..我发现了这种添加偏移量的优雅方法,但不幸的是仅在.NET4.0中可用http://msdn.microsoft.com/en-us/library/system.intptr.add%28VS.100%29.aspx

C# 性能 - 使用不安全指针代替 IntPtr 和 Marshal

问题我正在将C应用程序移植到C#中。C应用程序从第3方DLL调用许多函数,因此我在C#中为这些函数编写了P/Invoke包装器。其中一些C函数分配我必须在C#应用程序中使用的数据,因此我使用了IntPtr,Marshal.PtrToStructure和Marshal.Copy将native数据(数组和结构)复制到托管变量中。不幸的是,事实证明C#应用程序比C版本慢得多。快速性能分析表明,上述基于编码的数据复制是瓶颈。我正在考虑通过重写C#代码以使用指针来加速它。由于我没有使用C#中的不安全代码和指针的经验,因此我需要有关以下方面的专家意见问题:使用unsafe代码和指针代替IntPtr

c# - 如何从 C# 中的 byte[] 获取 IntPtr

我想在C#中将byte[]传递给采用IntPtr参数的方法,这可能吗?如何实现? 最佳答案 另一种方式,GCHandlepinnedArray=GCHandle.Alloc(byteArray,GCHandleType.Pinned);IntPtrpointer=pinnedArray.AddrOfPinnedObject();//Doyourstuff...pinnedArray.Free(); 关于c#-如何从C#中的byte[]获取IntPtr,我们在StackOverflow上找

c - 什么是intptr_t,它是整数类型还是指针类型?

在/usr/include/stdint.h中定义:typedeflongintintptr_t;它应该是整数类型还是指针类型? 最佳答案 它是一个有符号整数类型,大到足以容纳一个指针。 关于c-什么是intptr_t,它是整数类型还是指针类型?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6410294/

c++ - void* 与 static_cast 对比 intptr_t 与 reinterpret_cast

我想知道两种不同类型的非常特殊类型的转换表之间是否存在特定的、基于标准的差异。特别是,给定:类型T和变量T*object是:intptr_topaque=reinterpret_cast(object);T*result=reinterpret_cast(opaque);相当于:void*opaque=static_cast(object);T*result=static_cast(opaque);我只关心result,它是否保证是相同的值,相当于任何类型T的原始object?我不在乎中间opaque有什么位模式,因为我相信标准技术上允许它们在每种情况下都不同(尽管没有理智的编译器会产

c++ - intptr_t 有什么用?

我知道它是一个整数类型,可以在不丢失数据的情况下与指针进行转换,但我为什么要这样做呢?与void*用于保存指针和THE_REAL_TYPE*​​用于指针算术相比,整数类型有什么优势?编辑标记为“已经被问到”的问题没有回答这个问题。问题是使用intptr_t作为void*的一般替代品是个好主意,答案似乎是“不要使用intptr_t”,所以我的问题仍然有效:intptr_t的好用例是什么? 最佳答案 主要原因,您不能对void*进行按位运算,但您可以对intptr_t执行相同操作。在许多需要对地址执行按位运算的情况下,可以使用intpt

c++ - intptr_t 有什么用?

我知道它是一个整数类型,可以在不丢失数据的情况下与指针进行转换,但我为什么要这样做呢?与void*用于保存指针和THE_REAL_TYPE*​​用于指针算术相比,整数类型有什么优势?编辑标记为“已经被问到”的问题没有回答这个问题。问题是使用intptr_t作为void*的一般替代品是个好主意,答案似乎是“不要使用intptr_t”,所以我的问题仍然有效:intptr_t的好用例是什么? 最佳答案 主要原因,您不能对void*进行按位运算,但您可以对intptr_t执行相同操作。在许多需要对地址执行按位运算的情况下,可以使用intpt

c - intptr_t 和 uintptr_t 的字符串格式

intptr_t和uintptr_t的字符串格式是什么,对32位和64位架构都有效。编辑warning:format‘%x’expectstype‘unsignedint’,butargument2hastype"AAA"这是我在64位而不是32位中收到的警告。intptr_tAAA 最佳答案 这将是来自inttypes.h的以下宏:对于printf:PRIdPTRPRIiPTRPRIoPTRPRIuPTRPRIxPTRPRIXPTR对于scanf:SCNdPTRSCNiPTRSCNoPTRSCNuPTRSCNxPTR使用示例:ui

C#海康威视摄像头控制,将IntPtr转换成Bitmap图片

usingDVPCameraType;usingMvCamCtrl.NET;usingOpenCvSharp;usingSystem;usingSystem.Collections.Generic;usingSystem.Drawing;usingSystem.Drawing.Imaging;usingSystem.Linq;usingSystem.Runtime.InteropServices;usingSystem.Text;usingSystem.Threading;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespa