小编Mic*_*ers的帖子

X的动态数组的Delphi动态数组的内存布局是什么?

我试图从C#调用Delphi DLL中的过程.该过程期望调用者预分配并输入一个array of array of TSomeRecord,然后它将操作TSomeRecord元素作为返回结果的方法.因此,我需要手工制作Delphi数组的动态数组.
现在,我在这里发现动态array of X由指向动态数组的第一个元素的指针组成,并且第一个元素具有引用计数和长度前面的数组(两个32位整数)的元素数(元素数),以及元素内联和连续存储,以便整个内存在内存中看起来像这样:

rrrrllll000...000111...12...
        ^

rrrr是引用计数,llll是长度,0123是元素,^是指针指向的位置.这证明了; 我测试了它,它的工作原理.
多维动态数组我假定我可以替代array of YXarray of X,换言之,所述外尺寸是简单地(指针)动态数组,像这样的一个动态数组:

rrrrllll000011112222...
        ^

其中元素0000,1111等现在是独立分配的动态数组的32位指针.但是,这样做会让我遇到麻烦的访问权限.这显然不是德尔福希望我这样做的方式.任何人都可以向我解释我是如何该怎么办呢?

arrays delphi memory-layout

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

标签 统计

arrays ×1

delphi ×1

memory-layout ×1