C++ 如何解释(const int&a)和new int(a),它做什么?

C++ 如何解释(const int&a)和new int(a),它做什么?,c++,memory,memory-leaks,C++,Memory,Memory Leaks,1.如何解释(const int&a)和新的int(a),它做什么 2.你能给我解释一下内存泄漏的原因吗?根据代码判断,你使用的是c++ 您得到一个新指针c,其值为a,然后创建b,其值与c相同,返回b,将c作为泄漏,因为不再有任何东西指向c 最后: a是常数 b是c的值,它是a c是指向代码中不再引用的新变量的指针 您可能想从中挑选一本入门书,通读一遍,然后重新开始 关于你的问题: const int&a是对名为a的int的常量引用。基本上,它意味着指向某个地方的另一个int变量,其行为与该

1.如何解释
(const int&a)
新的int(a)
,它做什么


2.你能给我解释一下内存泄漏的原因吗?

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

您得到一个新指针
c
,其值为
a
,然后创建
b
,其值与
c
相同,返回
b
,将
c
作为泄漏,因为不再有任何东西指向
c

最后:

  • a
    是常数
  • b
    c
    的值,它是
    a
  • c
    是指向代码中不再引用的新变量的指针

您可能想从中挑选一本入门书,通读一遍,然后重新开始

关于你的问题:

  • const int&a
    是对名为
    a
    int
    的常量引用。基本上,它意味着指向某个地方的另一个int变量,其行为与该int相同,只是不能更改其值

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

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

    删除c

在函数结束之前


如注释所示,此函数在返回语句中有未定义的行为,因为您返回了本地变量的地址(您可能需要实际读取C++初学者手册来理解这意味着什么)。< / P>这是哪种语言?我添加了C++标记,但如果不是,将它转换成真正的语言标记。如果你不知道引用是什么,你可能想向C++介绍一本入门书。注意,使用返回值将导致未定义的行为。@ BoGrand,另外两个问题也容易在入门书中找到。

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