Ning_Yin 2017-09-09 02:39 采纳率: 100%
浏览 1617
已采纳

静态指针动态申请内存

静态指针动态申请内存,定义指针时申请了内存,然后每次满足条件时会释放内存再重新分配内存,但是由于不知道何时会是最后一次重新分配,因此最后一次使用后没有释放内存。请问这样会造成内存泄漏吗?
代码示例如下:

 void foo(int var){
     static int var_save = var;
     static T* ptr = new T;
     if (var_save!=var){
        delete ptr;
        var_save = var;
        ptr = new T;
     }
 }
 int main ( int argc, char* argv[]){
    //......
    while(1){
        //......
        foo(var);
        //......
    }
    return 0;
 }
  • 写回答

3条回答 默认 最新

  • shifenglv 2017-09-09 03:10
    关注

    如果内存被释放了,你再引用就会报错。如果动态的分配的内存不去人工释放,那么这个内存会在程序结束的时候被系统回收。由于动态分配的内存在堆区,所以
    可用的空间很大,一般不会因为空间不够而出现内存泄漏。当然,如果你动态分配的空间很大,比如说500M,或者分配了很多动态内存,那么不手动释放的话,就有可能造成内存泄漏。你要根据动态分配的空间大小,决定是否一定要手动释放内存。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大