静态指针动态申请内存

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

 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;
 }

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

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

假如var_save==var,你这不就内存泄漏了,给你一种不泄漏的参考,最多只有一份在堆区

void foo(int var){
static T* ptr = NULL;
if(ptr)
delete ptr;
ptr=new T;
}