推荐答案
测试一下
题目
SystemVerilog中,下面那种数组在使用前需要先执行new操作。
A.动态数组
B.联合数组
C.多维数组
D.压缩数组
参考答案与知识点
参考答案
正确答案是A。动态数组(dynamic array)在使用前需要先执行new操作来分配存储空间,否则未初始化的动态数组大小为0,无法存储数据。联合数组(associative array)也称为关联数组或哈希数组,在插入新元素时自动分配空间,无需显式new。多维数组(multidimensional array)和压缩数组(packed array)在声明时就已经确定了维度大小和存储结构,因此不需要new。需要注意的是,动态数组的new操作可以指定大小,例如`int dyn[] = new[10];`,而联合数组的索引可以是任意类型,如`int assoc[string];`,直接赋值`assoc["key"] = 1;`即可。多维数组如`int arr[3][4];`,压缩数组如`bit [7:0] packed;`都在编译时确定大小。因此只有动态数组依赖运行时动态分配内存。
涉及知识点
- 动态数组需要new分配空间
- 联合数组自动分配空间
- 多维数组声明时确定大小
- 压缩数组编译时固定大小
- SystemVerilog数组类型区别