Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6586696
  • 博文数量: 227
  • 博客积分: 10047
  • 博客等级: 上将
  • 技术积分: 6678
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-11 10:33
个人简介

网上的蜘蛛

文章分类

全部博文(227)

文章存档

2010年(19)

2009年(29)

2008年(179)

分类: C/C++

2010-10-27 08:20:49

本文同时发布在 

二维数组动态空间的申请原则:
申请的时候从外层往里层,逐层申请;
释放的时候从里层往外层,逐层释放。

二维数组动态空间分配举例,首先来看一组使用new方法:

const size_t DIMENSION = 10;
int **pp = new int *[DIMENSION];
for (int i = 0; i < DIMENSION; ++i)
    pp[i] = new int[DIMENSION];
 
pp[3][5] = 40;
 
for (int i = 0; i < DIMENSION; ++i)
    delete pp[i];
delete pp;

还有一组使用malloc方法,简单需要存放30个double 数据的内存3*10:

double **power;
    int i,j;
    power = (double **)malloc(sizeof(double) *3);
    for(i =0; i< 3;i++)
    {
        power[i] = (double *)malloc(sizeof(double) * 10);
 
    }
//....

    for(i=0;i<3;i++)
    {
        free(power[i]);
    }
    free(power);

其实没有必要每次用for循环去分配内存。可以一次性申请所需要的内存:

double **power;
    double *subpower;
    int i,j;
    power = (double **)malloc(sizeof(double) *3);
    subpower = (double *)malloc(sizeof(double) * 10 * 3);
    for(i =0; i< 3;i++)
    {
        power[i] = &subpower[i * 10];
    }
 
//...

    free(subpower);
    free(power);


阅读(5397) | 评论(0) | 转发(0) |
0

上一篇:博客迁移

下一篇:没有了

给主人留下些什么吧!~~