搜索

C语言一个多维数组的动态分配内存和释放内存分别在不同函数中可

gecimao 发表于 2019-07-25 19:05 | 查看: | 回复:

  我在写一个程序时,需要在很多个函数中用到同一个数组(多维)的值,并且这个数组又是通过动态分配内存和赋值得到的(因为必须通过传参来确定数组每一维的长短)。

  例如,我在函数A中动态分配内存并在函数A中赋值,但考虑到在函数B和C中必须使用这个赋值过的数组,因此我没有在A中释放(free)数组内存。

  1,在A中申请内存并赋值后,由于在函数B、C中还要用到,是否可以等B、C函数用完这个数组了再释放内存??

  ...// 在此函数中没有释放value内存,因为数组中的值还需在B和C中使用

  // C函数是最后一个使用value数组的函数,是否在这个函数最后使用free释放value数组即可?

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  不过也不需要再C里面释放,你的double **value;是属于类的成员变量,你可以在类的析构函数里面再进行释放。或者是在下次需要重新分配新的内存的时候把旧的释放

  比如viod Example::A(int num1, int num2, ...)里面会分配一个内存空间,则调用完后你确定后面没有用了,就释放掉。或者你可以写一个函数,把每次产生的内存在最后都能一起释放。

  1,在A中申请内存并赋值后,由于在函数B、C中还要用到,是否可以等B、C函数用完这个数组了再释放内存??

  不一定,因为产生的内存不释放在,系统是不会再分配到此区域的,所以你如果后面有函数访问的话,仍可以访问。所以你要等没有函数要用了再释放。

  谢谢啊,那么对于这个例子而言,我在函数C(C是最后使用的函数)中释放内存,或者在main函数中释放,哪一种更合适呢?或者在析构函数中释放?

  展开全部1,在A中申请内存并赋值后,由于在函数B、C中还要用到,是否可以等B、C函数用完这个数组了再释放内存??

  通常不会在调用函数里面释放, 一般在destruct函数和分配内存的函数内释放, 并且在construct函数内应该把value设为NULL

  展开全部完全可以,只要保证在整个程序中分配函数用了多少次,释放函数就用多少次,要成对出现,最好在声明是初始化为NULL,用if来判断是否分配过,有条件的执行释放

  不要把资源的申请释放与正常的业务处理搅在一起。否则很容易出错,难以维护。(特别是大型系统中,随着业务的增加,比如以后新增一个D处理,是在C处理完后再进行一些工作,就很难维护)

本文链接:http://hem-larm.com/dongtaicunchufenpei/1088.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部