【发布时间】:2017-05-10 12:27:07
【问题描述】:
这个问题应该很简单,但我不是 C++ 程序员。
想象一下,我有一个std::vector,其中填充了函数中的局部变量。我想做的是返回指向该数据的指针并从该函数中计数,而不是向量本身(因为它转到另一种语言,而不是 C++)。那么最好的方法是什么?
我敢打赌我可以用new 关键字声明向量,但是当我稍后在其pointer data 上调用free() 时,会不会有泄漏?
我也可以malloc() 新缓冲区,将向量的缓冲区复制到其中并返回新的缓冲区,但我希望我可以避免这种情况。
【问题讨论】:
-
如何将数据发送到其他语言?您可以只返回向量本身,然后使用
v.data()发送返回向量的内部指针吗? -
vector必须存在于其他语言使用它的地方。您要么不需要在其他语言完成之前从函数返回,要么将vector移动到某个持久空间中,或者将保持vector活动的责任交给其他语言。这些解决方案中的任何一个都可以,但是您的问题没有包含足够的信息来知道哪个是合适的。 -
malloc和free,new和delete。不要越过那些溪流。并且不要试图从它的眼皮底下删除vector的数据;这不好。 -
在函数外声明向量。将向量上的指针或链接传递给函数。填充函数内部的向量。你不需要调用“new”/“delete” - 向量正在做它而不是你;)
标签: c++ pointers vector memory-leaks