当前位置:  开发笔记 > 编程语言 > 正文

如果它是一个函数arguemente并且通过引用传递值,我应该删除它吗?

如何解决《如果它是一个函数arguemente并且通过引用传递值,我应该删除它吗?》经验,为你挑选了1个好方法。

我确定这个问题已经在某些地方得到了解答,请将它链接到它,如果有的话,但我很难找到这个确切问题的答案.有许多非常接近.以下是我已经阅读过的一些内容并不能完全回答我的问题:

使用指针传递引用和值 在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

提前干杯,皮特



1> Jarod42..:

你必须delete为每个人打电话new(除了特别安排的新职位).

在这里,不new,所以没有delete.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有