【问题标题】:how can i return an array and delete an array in C++ function?如何在 C++ 函数中返回一个数组并删除一个数组?
【发布时间】:2018-11-12 09:30:52
【问题描述】:
//how can i return an array and delete an array?

int* classA :: aa(double* data, int length){
int* arr = new int[length];
for(int i=0; i<length; i++)
arr[i] = data[i];
// please look at this part
return arr;
delete[] arr;
}

我想在分配后删除数组 'arr' 并且还想返回它。 我该怎么做? 我可以用吗 : x = ClassA.aa(数据,长度); 删除[] arr;

【问题讨论】:

    标签: pointers return


    【解决方案1】:

    首先,由于先前的 return 语句,永远不会到达带有 delete[] 语句的代码。我认为你不能同时考虑,因为如果你删除 arr 并在此之后返回指针,并且将来会尝试访问它的某些元素 将是未定义的行为,因为内存是空闲的。因此,如果您想在将来使用此指针,请不要释放内存。不需要 arr 时释放它。 X = ClassA.aa(数据,长度);删除[] X.

    【讨论】:

    • 感谢您的回复!你的回答对我很有帮助。再次感谢:)
    猜你喜欢
    • 2012-04-01
    • 2023-04-08
    • 2014-09-16
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 2017-08-03
    • 2013-03-10
    • 1970-01-01
    相关资源
    最近更新 更多