推荐答案
测试一下
题目
System Verilog中,下面那种数组在使用前需要先执行new操作
A. Dynamic arrays
B. Associative arrays
C. packed array
D. 多维数组
参考答案与知识点
参考答案
正确答案:A。动态数组(Dynamic arrays)在声明后需要显式分配内存,使用 `new` 操作符指定数组大小(例如 `int dyn[]; dyn = new[10];`)。若未执行 `new` 直接访问动态数组,将导致编译或运行时错误。关联数组(Associative arrays)使用索引作为键,无需预先分配内存,可直接赋值(如 `int assoc[string]; assoc["a"] = 1;`)。打包数组(packed array)和多维数组(此处指固定大小的多维数组)在声明时即确定了维度与大小,由编译器自动分配存储空间,无需 `new`。易错点:混淆动态数组与关联数组的内存管理——动态数组必须 `new`,关联数组不需要;打包数组和多维数组(固定大小)是静态数组,也不需要 `new`。注意多维数组也可指动态数组中的多维(动态数组的嵌套),但本题中D选项未明确,通常理解为固定大小的多维数组。
涉及知识点
- 动态数组需显式new分配内存
- 关联数组无需new直接使用
- packed array为静态编译期分配
- 固定大小多维数组为静态数组
- SystemVerilog数组分类与初始化