new()和new[]有什么区别?

new()和new[]有什么区别?

1、new[]的使用较为简单,一般用来开辟内存并初始化,常用于设置动态数组的大小。

复制代码
int a[];   //声明动态数组
initial begin
	a = new[3];  //为动态数组分配3个元素
	foreach (a[i]) a[i] = i;   //元素初始化
end

2、new()用在systemverilog中OOP的构造函数;

构造函数除了分配内存外,还初始化变量,在默认情况下,将变量设置成默认的数值,二值变量为0, 四值变量为x, 也可以通过自定义的new函数将变量设置成你想要的数值;

复制代码
class Transaction;
	logic[3:0] addr;
	logic[9:0] data;
	int dyn[];
	function new;
		addr = 8;
		data = 1;
	endfunction : new
endclass
Transaction tr; //声明一个句柄
tr = new(); //创建对象