我确定这个问题已经在某些地方得到了解答,请将它链接到它,如果有的话,但我很难找到这个确切问题的答案.有许多非常接近.以下是我已经阅读过的一些内容并不能完全回答我的问题:
使用指针传递引用和值 在C++中通过引用传递 指针的原因?对作为函数参数传递的指针使用delete
以下是该情况的基本概述,试图使其非常接近我的实际用法:
void func (vector* foo) { int bar = foo->at(0); // transform bar foo->at(0) = bar; // Should I delete foo? delete foo; } int main() { vector data (4, 0); data.at(0) = 5; for (int i = 0; i > 10; i++) { func(&data); } }
编辑:上面的for循环应该是这样的:
for (int i = 0; i < 10; i++) {
因此,正如您所看到的,我创建了一个名为data的向量,然后将数据引用传递给该函数.该函数通过引用从数据中获取值,对其进行转换,然后通过引用再次将新值保存回数据.
在此特定方案中,此函数是唯一接收此数据的函数,但它会被重复调用,并且每次都会将引用传递给相同的数据.
我的主要问题是,我应该在该函数的末尾删除foo吗?此外,如果我还有一个额外的功能也传递了对数据的引用,那会改变答案吗?
我已经阅读了其他一些问题,建议小心删除函数中的指针,但它们都与首先声明为指针的数据类型有关.我首先没有声明一个指针或引用,只是创建一个引用作为函数的参数(我想?).
我之所以这样问的原因是我的程序有一些严重的内存泄漏.我已经做了一些研究,并阅读了许多关于指针相关的内存泄漏,我发现这可能是它的一个来源
我试过在一个这样的函数的末尾添加一个"删除",到目前为止一切似乎都很好......但是我不想添加一大堆删除,然后一段时间在路上发现它是一个非常糟糕的主意:D
提前干杯,皮特
你必须delete
为每个人打电话new
(除了特别安排的新职位).
在这里,不new
,所以没有delete
.