使用 malloc 分配的块地址

Address of the block assigned using malloc

我必须在下面的代码中使用 malloc 分配内存:

typedef struct qu_n_t {
                  int    item; 
                  struct qu_n_t *next; 

               } qu_node_t;
qu_node_t *currentblock = NULL;
qu_node_t *tmp;
currentblock = (qu_node_t *) malloc( 5 * sizeof(qu_node_t) );
tmp = currentblock++;

现在一旦代码被执行,currentblock指针将被分配到5 * sizeof(qu_node_t)的内存地址。如果我使用 currentblock,分配给它的地址是什么?它会是使用 malloc 分配的 5 个块中的第一个块地址吗?

是的,调用malloc后,currentblock指向数组中的第一个block。

下一行之后,tmp指向第一个块,currentblock指向第二个块。

是的,这将是第一个块的地址。本质上,您分配了一个包含 5 个元素的数组 qu_n_t。因此,您可以使用 currentblock[1] 等访问第二个元素