mal*_*ree 4 arrays memory-management d
在C:
int a[10];
printf("%p\n", a);
printf("%p\n", &a[0]);
Run Code Online (Sandbox Code Playgroud)
产量:
0x7fff5606c600
0x7fff5606c600
Run Code Online (Sandbox Code Playgroud)
这是我的期望.现在,在D中,我正在尝试这个(显然没有用例,只是鬼混):
int[] slice = [...];
writeln(&slice);
writeln(&slice[0]);
Run Code Online (Sandbox Code Playgroud)
产量:
7FFF51600360
10E6E9FE0
Run Code Online (Sandbox Code Playgroud)
为什么不同?看起来像一个完全不同的内存段.(虽然我刚想到D中的数组可能不仅仅是相邻分配的内部?)
rat*_*eak 12
在D中,数组本质上是一个带有指针和长度字段的结构,并且被视为这样
要获取第一个元素的地址,您可以查询ptr字段