如何解释(const int& a)和new int(a),它有什么作用?

时间:2014-02-23 05:27:09

标签: c++ memory memory-leaks

int * myFun(const int & a) 
{
    int * c = new int(a);
    int b = *c;
    return &b;
}

1.如何解释(const int & a)new int (a),它有什么作用?

2.你能解释一下为什么会有内存泄漏吗?

2 个答案:

答案 0 :(得分:2)

您可能希望从The Definitive C++ Book Guide and List中选择一本初学者书,阅读它然后重新开始。

关于你的问题:

  • const int & a是对int的const引用,名为a。基本上,它意味着在某处指向另一个int变量的东西,并且行为就像那个int,除非你不能改变它的值

  • new int (a)表示您在堆上的某处为int变量动态分配内存,并使用值a初始化该变量。此表达式返回刚刚创建的变量的地址

  • 为什么会出现内存泄漏?您使用new int(a)语句分配内存,但从不释放它。这应该通过以下方式完成:

    delete c;

在你的功能结束之前。

如注释中所述,此函数在return语句中具有未定义的行为,因为您返回局部变量的地址(您可能需要实际阅读该C ++初学者书籍以了解其含义)。

答案 1 :(得分:1)

根据代码判断,您使用的是c ++

您获得一个值为c的新指针a,然后您创建b,其值与c相同,则返回b,将c作为泄漏,因为没有任何内容指向c

当时结束:

  • a是const
  • bc的值,是a
  • 的值
  • c是指向代码中不再引用的新变量的指针