C++ 链表中是否有动态数组及其内存分配

C++ 链表中是否有动态数组及其内存分配,c++,system-verilog,C++,System Verilog,在systemverilog中,我可以定义struct,这样我就可以创建自己的链表 比如说, struct node{ int a; bit my_assoc_array[string]; node* nextNode; }; 如果我这样做,如何为这个结构分配内存?如果这是32位系统,那么int a将分配4个字节。为动态关联数组分配了多大的内存以及从何处开始?例如,通常一个char数组[10]的初始指针指向头部位置 __ ___ ___ ___ ___ ___ ___ _

在systemverilog中,我可以定义struct,这样我就可以创建自己的链表 比如说,

struct node{
int a;
bit my_assoc_array[string];
node* nextNode;
};
如果我这样做,如何为这个结构分配内存?如果这是32位系统,那么int a将分配4个字节。为动态关联数组分配了多大的内存以及从何处开始?例如,通常一个char数组[10]的初始指针指向头部位置

       __     ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ 
 array| -|-->|...|...|...|...|...|...|...|...|...|...|
       --     --- --- --- --- --- --- --- --- --- --- 
               0   1   2   3   4   5   6   7   8   9

感谢您的帮助。

SystemVerilog不允许您查看结构的内部表示或任何其他数据类型。它最接近于为类对象提供句柄。但它确实提供了许多内置数据类型,减少了对此类知识的需求。例如,它有一个队列,为您提供了链表的功能

这是关联数组的systemverilog语法。键是字符串类型,映射值类型为bit。systemverilog基于c++对最后一句话进行排序,通过
char数组[10]声明数组
C
C++
中都不会创建指针,所以在我的理解中,数组最初指向头部。“不,这是一种非常糟糕的思考方式。数组是一个连续区域,用于保存任何对象的多个副本,例如
char
array[n]
直接引用第n个元素,不涉及任何指针。编译器知道,在编译时数组的元素存储在哪里,因此给定数组中的任何索引,它可以直接计算相关元素的地址。它不需要指向数组头元素的指针就可以实现这一点。普通数组不涉及指针,但在许多情况下,数组会退化为指向第一个元素的指针。std::vector确实使用指向堆上内部数组的指针,如果动态分配数组,当然会存储指向第一个元素的指针。谢谢dave。您知道systemverilog内部如何为动态数组(如关联数组)分配内存吗?当它被声明时,它将获得多少内存,而在编译时它没有内存?如果分配了内存,它还会指向该内存块的起始地址吗?SystemVerilog中的内存分配比大多数其他编程语言中的内存分配要复杂得多,这是由于更改值所创建的事件造成的。除非您自己尝试构建一个模拟器,否则您不应该关心这些主题。