Pet*_*der 10 arrays performance memory-management d static-array
在D中,所有数组文字都是动态数组,因此由GC分配.
即便在这个简单的例子中:
int[3] a = [10, 20, 30];
Run Code Online (Sandbox Code Playgroud)
数组是堆分配的,然后复制到a.
如何在没有堆分配的情况下初始化静态数组?
你可以手动完成:
int[3] a = void;
a[0] = 10;
a[1] = 20;
a[2] = 30;
Run Code Online (Sandbox Code Playgroud)
但这充其量是乏味的.
有没有更好的办法?
static const int[3] a = [10, 20, 30];
Run Code Online (Sandbox Code Playgroud)
这将在数据段中放置一个常量副本.您可以使用简单的赋值(auto copy = a;)在堆栈上创建一个副本(不涉及堆分配).