| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1989 人关注过本帖, 1 人收藏
标题:指针的释放方式
取消只看楼主 加入收藏
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
收藏(1)
 问题点数:0 回复次数:2 
指针的释放方式
#include   <stdio.h>  
#include   <stdlib.h>
#include   <malloc.h>
#include   <assert.h>
double *Alloc_Double_Array(long length)
{
    double *array = NULL;
   
    if( NULL == (array = new double [length]) )
    {
        fprintf(stdout, "Merory Exhausted\n");
        return NULL;
    }
   
    //memset(array, 0, length*sizeof(double));
    return array;
}

template <typename T>
void Free_Array (T **array)
{   
    assert( array != NULL);
    //printf("array=0x%p,*array=0x%p\n",array,*array);
    delete  *array;
} // Free_Array(&p1);

template <typename T>
void FreeArray (T *array)
{   
    assert( array != NULL);
    delete  *array;
} // Free_Array(&p2);

int main()  
{  
    double *p1 = Alloc_Double_Array(0x100);
    double *p2 = Alloc_Double_Array(0x100);
    printf("p1=0x%p,p2=0x%p\n",p1,p2);
    p1[0] = 1.3;
    p2[0] = 2.3;

    Free_Array(&p1);
    printf("first\n");
    p1 = Alloc_Double_Array(0x100);
    p1[0] = 1.3;
    p2[0] = 2.3;
    printf("p1=0x%p,p2=0x%p\n",p1,p2);

    FreeArray(&p2);
    printf("second\n");
    p2 = Alloc_Double_Array(0x100);
    p1[0] = 1.3;
    p2[1] = 2.3;
    printf("p1=0x%p,p2=0x%p\n",p1,p2);
    return 0;
}
为什么采用上述两种方法释放指针均正确》》

正确释放方法.JPG (49.14 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 释放内存 free 
2008-11-23 01:00
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
回复 第2楼 debroa723 的帖子
为什么您不主张 使用
template <typename T>
void FreeArray (T *array)
或者
template <typename T>
void FreeArray (T **array) 这种方式,明确以指针的形式出现呢??

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2008-11-23 22:47
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
回复 第6楼 中学者 的帖子
我觉得使用
void FreeArray (void *array)
{   
     //另做处理
} 这种方法,在使用的时候,需要把别的类型强制转换到 void *类型,使用时有点累赘,所以才想用模板

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2008-11-25 00:39
快速回复:指针的释放方式
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012718 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved