2011-05-13 49 views
0

在任何字典数据结构中都有一个add_to_ds函数,它接收作为参数插入所需的数据 。 问题是这样的:add_to_ds是否应该让对象自己(类型T)并执行内存分配,或者add_to_ds是否应该获得指向对象的指针,然后插入指针(类型T *,使用DS的内存分配)。关于实现字典数据结构的正确方法的一般问题

做什么是正确的做法,为什么?

+0

请详细说明。什么语言?目前的实现是什么样的? – Oded 2011-05-13 20:03:14

+0

@Oded我不知道它是否真的很重要,但我正在使用C/C++, ,我指的是链接列表,二叉树,跳过列表等数据结构' – Belgi 2011-05-13 20:05:54

+0

嗯,它很重要,因为你是谈论指针。你知道,并非所有的语言都支持它们。 – Oded 2011-05-13 20:06:50

回答

1

没有任何一般的正确/错误的方法来做到这一点。如果你信任调用者不修改内存,那么你可以很好地存储一个指针。如果,但是你没有在你的界面中指定,你将不得不复制内存。

  • 如果你让他们进入三分球,他们 将负责与释放内存,不接触等
  • 如果信任他们,你必须释放内存,你会必须返回副本到存储的项目(否则,如果你返回你的指针,他们可能会释放它/改变它)
+0

我很担心,每次通话都会影响数据会影响性能...... – Belgi 2011-05-13 20:13:06

+1

@Belgi如果你不想让性能受到影响,只要让客户知道他们如果他们释放/修改数据,他们就会被解雇。 – cnicutar 2011-05-13 20:20:18

+0

尽量不要信任你的用户/程序员。你会用这种方式写出更好,更安全的代码。 – 2011-05-13 20:50:16