相关疑难解决方法(0)

什么是Windows句柄?

在Windows中讨论资源时,什么是"句柄"?他们是如何工作的?

windows handle

148
推荐指数
7
解决办法
12万
查看次数

为什么指向函数的指针大小与指向成员函数的指针大小不同?

指针只是一个地址吗?或者我错过了什么?

我测试了几种类型的指针:

  • 指向任何变量的指针是相同的(我平台上的8B)
  • 指向函数的指针大小相同,作为指向变量的指针(8B再次)
  • 指向具有不同参数的函数的指针 - 仍然相同(8B)

但是指向成员函数的指针更大 - 我的平台上有16B.

三件事:

  1. 为什么指向成员函数的指针更大?他们需要更多信息?
  2. 据我所知,标准只字未提指针的大小,除了void*必须能够"包含"任何指针类型.换句话说,任何指针必须能够被转换为void*,对吧?如果是这样,那么为什么sizeof( void* )是8,而sizeof指向成员函数的指针是16?
  3. 是否还有其他指针示例,它们具有不同的大小(我的意思是,对于标准平台,不是一些稀有和特殊的平台)?

c++ pointers member-function-pointers function-pointers

28
推荐指数
2
解决办法
6831
查看次数

C#中的易失性字段

从规范10.5.3挥发性字段:


volatile字段的类型必须是以下之一:

  • 引用类型.

  • 类型byte,sbyte,short,ushort,int,uint,char,float,bool,System.IntPtr或System.UIntPtr.

  • 具有枚举基类型byte,sbyte,short,ushort,int或uint的枚举类型.


首先,我想确认我的理解是正确的:我猜上面的类型可以是volatile,因为它们在内存中存储为4字节单元(因为它的地址对于引用类型),这保证了读/写操作是原子的.double/long/etc类型不能是volatile,因为它们不是原子读/写,因为它们在内存中超过4个字节.我的理解是否正确?

第二,如果第一个猜测是正确的,为什么用户定义的结构只有一个int字段(或类似的东西,4个字节就可以)不能是易失性的?理论上它是原子的吗?或者仅仅是因为所有用户定义的结构(可能超过4个字节)不允许设计的易失性?

.net c# clr language-features volatile

11
推荐指数
1
解决办法
3422
查看次数

什么是intptr?

我不明白什么是IntPtr,有人可以解释一下吗?谢谢

c++-cli intptr

8
推荐指数
2
解决办法
1万
查看次数

什么是手柄?IntPtr的

我一直在阅读IntPtr,并已阅读它用于表示句柄.这究竟是什么意思?我确信这是一个简单的解释,但是灯泡现在还没有打开..

.net c# handle intptr

8
推荐指数
2
解决办法
6983
查看次数

如何在C#中声明一个void指针

我们如何在C#中声明一个void指针?

c# void c#-4.0

5
推荐指数
1
解决办法
2万
查看次数