int * myFun(const int & a)
{
int * c = new int(a);
int b = *c;
return &b;
}
1.如何解释(const int & a)
和new int (a)
,它有什么作用?
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 b
是c
的值,是a
c
是指向代码中不再引用的新变量的指针