码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 函数返回数组指针的问题

时间:2016-06-14 06:26:19      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

提醒一下:
int *func()
{
int a[10] = {5};
return a;
}
是非法的,因为 a 是局部变量,被申请在系统栈中,局部变量在函数返回后会被销毁,于是你返回的指针指向的是一段已经被系统回收的内存,这样的访问是非法的。
int *func()
{
int *a = new int[10];
a[0] = 5;
return a;
}
是合法的,通过new运算符申请的一段内存是在系统堆上的,其销毁不受系统控制,而由程序员控制,所以如果在外部有int *ret = func(),将 ret 使用完毕后需及时 delete ret;,否则可能造成内存泄露。

C++ 函数返回数组指针的问题

标签:

原文地址:http://www.cnblogs.com/blog-3123958139/p/5582625.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!