喊我在函数中删除动态数组?

时间:2014-12-09 17:10:12

标签: c++ dynamic

如果我希望我的函数返回2D数组,我可以写:

float **A(something){
    float **a;
    *operations here*
    return a;
}

我的问题是:我应该删除动态分配的数组a,还是在函数返回值后会自动删除?

2 个答案:

答案 0 :(得分:2)

没有!如果您删除了函数中动态分配的 a ,则使用 A 的所有访问都将无效,因为内存已返回操作系统,所有数据都将丢失

答案 1 :(得分:1)

假设“a”在操作中被分配,此函数依赖于调用者以匹配分配的方式删除/释放它。这会带来一些风险,因为它们都必须发生,但它们发生在代码的不同部分,所以如果一个部分发生变化,或者你在其他地方使用这个功能,那么事情就会出错。

我建议将它包装在一个将处理初始化和删除内存的类中。然后,您可以在类中编写操作,并对它们进行单元测试。