我正在用 C 语言编写堆数据结构。有一件事我无法决定。我将其实现为数组。它的工作方式是,函数“insert”获取指向某些数据的指针并将该数据的所有字节复制到数组中,这是一个好方法吗?或者我应该只存储调用该函数的指针本身?
最佳答案
嗯,你必须考虑到指向的内存可能会被更改或变得无效,例如当它是堆栈上的变量时。所以在大多数情况下,只存储指针并不是一个好主意。 如果您必须有一个函数insert(),则无法复制内存 - 尽管这很慢。最好是使用 memcpy(),因为这仍然是最快的函数。
堆的设计通常有点不同:您有一个函数 malloc(int size),您可以调用该函数来检索指向所需大小的内存区域的指针。您可以在那里存储您需要的任何内容。
关于c - 堆C数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13387336/