c - 堆C数据存储

标签 c arrays pointers heap

我正在用 C 语言编写堆数据结构。有一件事我无法决定。我将其实现为数组。它的工作方式是,函数“insert”获取指向某些数据的指针并将该数据的所有字节复制到数组中,这是一个好方法吗?或者我应该只存储调用该函数的指针本身?

最佳答案

嗯,你必须考虑到指向的内存可能会被更改或变得无效,例如当它是堆栈上的变量时。所以在大多数情况下,只存储指针并不是一个好主意。 如果您必须有一个函数insert(),则无法复制内存 - 尽管这很慢。最好是使用 memcpy(),因为这仍然是最快的函数。

堆的设计通常有点不同:您有一个函数 malloc(int size),您可以调用该函数来检索指向所需大小的内存区域的指针。您可以在那里存储您需要的任何内容。

关于c - 堆C数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13387336/

相关文章:

python - numpy从多个文件创建数组

c - 对象在 C 中返回后返回垃圾值

c - 如何从另一个 .c 文件调用函数

c - 请帮助我进行C语言解密

c - 结构扩展的内存分配

arrays - 我有十个按钮,我需要知道用户选择了哪个按钮并将该信息保存到用户配置文件中

c - 如何使用socket编程在c中找到客户端地址

arrays - 如何在 parse.com 仪表板中添加数组?

c++ - 为什么在调用 std::call_once() 时需要这个指针?

c++ - std::make_shared 中的原始指针