我正在用 C 编写一个堆数据结构。有一件事我无法决定。我将它实现为一个数组。它的工作方式是,“插入”函数采用指向某些数据的指针并将指向的该数据的所有字节复制到数组中,这是一个好方法吗?或者我应该只存储指针本身,调用函数?
问问题
178 次
2 回答
2
好吧,您必须考虑指向的内存可能会被更改或变得无效,例如当它是堆栈上的变量时。所以在大多数情况下,只存储指针并不是一个好主意。如果您必须有一个函数 insert() ,则无法复制内存 - 尽管这很慢。最好是使用 memcpy(),因为这仍然是最快的函数。
堆的设计通常有点不同:您有一个函数 malloc(int size) 调用它来检索指向所需大小的内存区域的指针。在那里你可以存储任何你需要的东西。
于 2012-11-14T21:18:25.320 回答
0
如果插入的对象是用 malloc/calloc 分配的,则应该存储指针。特别是使用结构,复制对象可能会增加开销。
于 2012-11-14T21:21:19.133 回答