如何获取数组中元素的大小?

时间:2018-01-19 09:23:40

标签: .net f#

我正在尝试追踪内存损坏错误,我设法在那里获得了大部分内容。事实证明,ManagedCuda的from django.conf.urls import url from django.conf.urls import include from django.contrib import admin urlpatterns = [ url(r'^'moraimono/$', include('moraimono.urls')), url(r'^'admin/$', admin.site.urls), ] 类为每个CudaDeviceVariable元素分配4个字节,而我强烈怀疑F#的本机数组每个bool元素仅占用1个字节。 bool函数假定源和目标的大小相同,导致它写入数组的末尾。

我希望编译器告诉我F#的CopyToHost实际上是每个元素1个字节,所以我有最终的证明并使用它来替换错误的bool []库计算尺寸的功能。

怎么可能这样做?

2 个答案:

答案 0 :(得分:5)

您可以通过在运行时比较相邻数组元素的实际地址来获得git stash apply数组元素分配大小的防弹指示:

bool

在fsi中评估

open System.Runtime.InteropServices

let boolarray = Array.zeroCreate<bool> 2

let elemSize = Marshal.UnsafeAddrOfPinnedArrayElement(boolarray,1) -
               Marshal.UnsafeAddrOfPinnedArrayElement(boolarray,0)

有效地表示在我的系统上没有填充的情况下每个元素分配1个字节。

答案 1 :(得分:1)

您可以使用sizeof<bool>获取1