java中可以return float[]:
float[] function(){
float[] numbers = new float[]{1.1f, 1.2f, 1.3f};
return numbers;
}
因为java中的垃圾回收机制保证,只要引用在,这块内存就不会被清理。
但是!c++中就不能这么做。
// 错误的示例
float* function(){
float numbers[] = {1.1, 1.2, 1.3};
return number;
}
因为numbers是函数内部的局部变量,函数结束以后这块内存就会被释放了,虽然得到了这块内存的指针,而内存中的内容可能就不存在了。返回对象也同理,不能够把创建在栈内存中的对象的指针返回回去。
但是可以这么做,因为new出来的对象是在堆内存中,不会自动释放。
// 正确的做法
float* function(){
float* numbers = new float[]{1.1, 1.2, 1.3};
return number;
}
相关文章:
[1] java中的内存管理机制:http://www.cnblogs.com/whgw/archive/2011/09/29/2194997.html