如果我希望我的函数返回2D数组,我可以写:
float **A(something){
float **a;
*operations here*
return a;
}
我的问题是:我应该删除动态分配的数组a,还是在函数返回值后会自动删除?
答案 0 :(得分:2)
没有!如果您删除了函数中动态分配的 a ,则使用 A 的所有访问都将无效,因为内存已返回操作系统,所有数据都将丢失
答案 1 :(得分:1)
假设“a”在操作中被分配,此函数依赖于调用者以匹配分配的方式删除/释放它。这会带来一些风险,因为它们都必须发生,但它们发生在代码的不同部分,所以如果一个部分发生变化,或者你在其他地方使用这个功能,那么事情就会出错。
我建议将它包装在一个将处理初始化和删除内存的类中。然后,您可以在类中编写操作,并对它们进行单元测试。