Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 展开链接列表中的内存开销?_C_Data Structures - Fatal编程技术网

C 展开链接列表中的内存开销?

C 展开链接列表中的内存开销?,c,data-structures,C,Data Structures,作者说分配它的单个节点将需要(12字节+8字节的开销)我不明白这8字节的开销意味着什么,他是如何计算的?当你调用以前malloc-ed的对象的free时,内存管理系统需要做一些“簿记”将要返回的内存块添加回未分配内存池。具体来说,它需要知道您请求的块有多大,以便尽可能将realloc放入同一块中。实际数据特定于malloc的实现,但它通常包括指向动态分配器管理的其他内存块的链接 簿记数据必须存储在从malloc返回给您的每个内存块的某个位置。它可以存储在返回给您的内存块中,或者存储在内存分配器已

作者说分配它的单个节点将需要(12字节+8字节的开销)我不明白这8字节的开销意味着什么,他是如何计算的?

当你调用以前
malloc
-ed的对象的
free
时,内存管理系统需要做一些“簿记”将要返回的内存块添加回未分配内存池。具体来说,它需要知道您请求的块有多大,以便尽可能将
realloc
放入同一块中。实际数据特定于
malloc
的实现,但它通常包括指向动态分配器管理的其他内存块的链接

簿记数据必须存储在从
malloc
返回给您的每个内存块的某个位置。它可以存储在返回给您的内存块中,或者存储在内存分配器已知的单独位置,但至少有两个数字表示请求的大小和分配的大小


这就是作者所说的开销:当您请求12个字节时,系统会给您12个字节,并且会使用两个4字节的块(块的大小和到下一个块的链接)进行自己的簿记,总共20个字节。

当您对之前
malloc
-ed的对象调用
free
时,内存管理系统需要做一些“簿记”,将要返回的内存块添加回未分配内存池。具体来说,它需要知道您请求的块有多大,以便尽可能将
realloc
放入同一块中。实际数据特定于
malloc
的实现,但它通常包括指向动态分配器管理的其他内存块的链接

簿记数据必须存储在从
malloc
返回给您的每个内存块的某个位置。它可以存储在返回给您的内存块中,或者存储在内存分配器已知的单独位置,但至少有两个数字表示请求的大小和分配的大小


这就是作者所说的开销:当您请求12个字节时,系统会给您12个字节,并且会使用两个4字节的块(块的大小和到下一个块的链接)进行自己的簿记,总共20个字节。

当您对之前
malloc
-ed的对象调用
free
时,内存管理系统需要做一些“簿记”,将要返回的内存块添加回未分配内存池。具体来说,它需要知道您请求的块有多大,以便尽可能将
realloc
放入同一块中。实际数据特定于
malloc
的实现,但它通常包括指向动态分配器管理的其他内存块的链接

簿记数据必须存储在从
malloc
返回给您的每个内存块的某个位置。它可以存储在返回给您的内存块中,或者存储在内存分配器已知的单独位置,但至少有两个数字表示请求的大小和分配的大小


这就是作者所说的开销:当您请求12个字节时,系统会给您12个字节,并且会使用两个4字节的块(块的大小和到下一个块的链接)进行自己的簿记,总共20个字节。

当您对之前
malloc
-ed的对象调用
free
时,内存管理系统需要做一些“簿记”,将要返回的内存块添加回未分配内存池。具体来说,它需要知道您请求的块有多大,以便尽可能将
realloc
放入同一块中。实际数据特定于
malloc
的实现,但它通常包括指向动态分配器管理的其他内存块的链接

簿记数据必须存储在从
malloc
返回给您的每个内存块的某个位置。它可以存储在返回给您的内存块中,或者存储在内存分配器已知的单独位置,但至少有两个数字表示请求的大小和分配的大小


这就是作者所说的开销:当您请求12个字节时,系统会给您12个字节,并使用两个4字节的块(块的大小和到下一个块的链接)进行自己的簿记,总共20个字节。

您能包括阅读此代码的上下文吗?对于初学者来说,如果保留对该单个节点的引用,则需要内存。我已经提到了主题“展开链接列表”(unrolled link list)。确切数量取决于您的
malloc
实现。4-8字节是一个非常典型的数字。你能把阅读这段代码的上下文包括进去吗?对于初学者来说,如果保留对该单个节点的引用,则需要内存。我已经提到了主题“展开链接列表”(unrolled link list)。确切数量取决于您的
malloc
实现。4-8字节是一个非常典型的数字。你能把阅读这段代码的上下文包括进去吗?对于初学者来说,如果保留对该单个节点的引用,则需要内存。我已经提到了主题“展开链接列表”(unrolled link list)。确切数量取决于您的
malloc
实现。4-8字节是一个非常典型的数字。你能把阅读这段代码的上下文包括进去吗?对于初学者来说,如果保留对该单个节点的引用,则需要内存。我已经提到了主题“展开链接列表”(unrolled link list)。确切数量取决于您的
malloc
实现。4-8字节是一个非常典型的数字。我不认为有任何理由它需要跟踪
struct listblock
{
  struct listblock*next;
  struct listnode*head;
  int countNode;
}