动态分配二维数组以及需要注意的问题

来源:互联网 发布:sql server truncate 编辑:程序博客网 时间:2024/05/19 03:43
使用数组指针,分配一个指针数组,将其首地址保存在b中,然后再为指针数组的每个元素分配一个数组
           int **b=new int*[row];       //分配一个指针数组,将其首地址保存在b中                                                     
           for(i=0;i<row;i++)             //为指针数组的每个元素分配一个数组
               b[i]=new int[col];
        该方法定义的动态二维数组的释放需先释放指针数组的每个元素指向的数组,然后再释放该指针数组:
           for(i=0;i<row;i++)
           {
                 delete [col]b[i];
                 b[i]=NULL;
           }
           delete [row]b;

           b=NULL;

/////////////////////////////////////////////////////////

以上程序来源于网络,可以动态设置二维数组的大小。但需要十分注意的是由于这个二维数组的空间是分row次new申请的,所以该二维数组的地址不是连续的,而直接定义数组时申请的地址空间是连续的。因此实际应用时应十分注意这个区别。比如我将位图数据复制到上面程序的二维数组b[row][col]时,如果按照&b[0][0]这个起始地址写数据到bmp文件时结果是错的,因为写文件时地址是连续的,而实际地址是不连续的。

在这种情况下可以直接申请一个连续的,足够大的地址

int* b=new int[row*col];//要读取b[m][n]相当于读取b[m*row+col],由于只申请一次空间,因此该空间是连续的

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 两证合一后国税怎么办 杭州的发票丢了怎么办 小车登记证丢了怎么办 个体户地税逾期未申报怎么办 公司社保本丢了怎么办 社保红本子掉了怎么办 三证合一后逾期怎么办 个体执照没办国税地税怎么办 丰巢APP注册没工牌号怎么办 农业银行k宝证书过期怎么办 个体户网上申报税没定期怎么办 遇到不给开票的商户怎么办 奶茶店电脑下单怎么办 个体户营业执照注销怎么办清税业务 注册公司没有办公地点怎么办 变更莒业执照法人怎么办手续 欠了几十万贷款怎么办 杭州公司跨区迁址怎么办 公司同市内跨区迁址怎么办 合同写错了字怎么办 农行卡转工行卡怎么办 外地人在北京交社保退休怎么办 身份证掉了单位宿舍怎么办居住证 广州租住单位宿舍怎么办居住证 公司u盾丢了怎么办 北京办了居住卡怎么办延期 商铺被陌生人注册左公司怎么办 营业执照年检登录密码忘了怎么办 欠人家钱没钱还怎么办 欠钱实在没钱还怎么办 党关系丢了10年怎么办? 离婚后生孩子怎么办出生证明 注册公司没有注册地址怎么办 银行流水不够2倍怎么办 个体户小店怎么办五险 姓和名五行相克怎么办? 三星s7刷机后计算器没有了怎么办 线雕鼻子山根鼓怎么办 在日本没有日币怎么办 明知合同回扣特别高怎么办 医院药品断货了怎么办