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条)

报告相同问题?

悬赏问题

  • ¥15 Matlab问题解答有两个问题
  • ¥50 Oracle Kubernetes服务器集群主节点无法访问,工作节点可以访问
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决
  • ¥15 gsoap生成onvif框架
  • ¥15 有关sql server business intellige安装,包括SSDT、SSMS。
  • ¥15 stm32的can接口不能收发数据
  • ¥15 目标检测算法移植到arm开发板
  • ¥15 利用JD51设计温度报警系统
  • ¥15 快手联盟怎么快速的跑出建立模型