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