2008年3月10日
怎样给多维数组动态分配内存
//Allocate:
int **p = new int* [m];
for(int i = 0 ; i < m ; i++)
p[i] = new int[n];
//Use:
for(int i = 0 ; i < m; i++)
for(int j = 0 ; j < n ; j++)
p[i][j] = i * j;
//Free:
for(int i = 0 ; i < m ; i++)
delete[] p[i];
delete[] p;
1. 演示形为int[2][3]的二维动态数组
///////////////////////////////////////////////////////////////////
int n1, n2;
const int DIM1 = 2;
const int DIM2 = 3;
// 构造数组
int **ppi = new int*[DIM1];
for(n1 = 0; n1 < DIM1; n1++)
{
ppi[n1] = new int[DIM2];
}
// 填充数据
for(n1 = 0; n1 < DIM1; n1++)
{
for(n2 = 0; n2 < DIM2; n2++)
{
ppi[n1][n2] = n1 * 10 + n2;
}
}
// 输出
for(n1 = 0; n1 < DIM1; n1++)
{
for(n2 = 0; n2 < DIM2; n2++)
{
afxDump << "ppi[" << n1 << "][" << n2 << "] = "
<< ppi[n1][n2] << "\n";
}
}
// 释放数组
for(n1 = 0; n1 < DIM1; n1++)
{
delete [] ppi[n1];
}
delete [] ppi;
2. 三维动态数组(int[2][3][4])
请查看全文
2008年3月10日
最近在做网格任务调度算法的模拟实验的时候,需要用到比较达到数组,于是就需要学习用动态多维数组来进行内存的分配。
在网上找了些资料,好多是关于c++方面分配的,这里有一个c语言的分配方法。(转载自Fish-Bowl)
普通的动态内存分配只能分配一维的数组:
例如:
#define ARRAY_SIZE 1024 ;
unsigned char * pa = NULL ;
pa = (unsigned char *)malloc(ARRAY_SIZE) ;
然后就可以pa[1], pa[0] ...当成一维数组操作了。
释放的时候:
free(pa) ;
但是,很多情况下,我们需要动态的二维数组,乃至多维数组,例如矩阵计算,有限元分析,三维实体建模等等。那么如何利用普通的c语言,实现多维数组呐?
动态二维数组:
#define ARRAY_SIZE 20*20
//这里是20x20的矩阵
unsigned char (*matrix_1)[20] ;
matrix_1 = (unsigned char (*)[20])malloc(ARRAY_SIZE) ;
然后就可以matrix_1[0][0], matrix_1[0][1]。。。这样使用了。释放方式同一维数组。
动态的三维数组:
#define ARRAY_SIZE 5*32*32
//定义了5桢,每桢是32x32的矩阵
unsigned char (*frame)[32][32] ;
frame = (unsigned char (*)[32][32])malloc(ARRAY_SIZE) ;
然后就可以frame[0][0][0]之类的直接使用了,释放方法同上。
这样可以用普通的指针,利用可扩展的宏标记,实现对矩阵算法的封装了。
c++的动态分配内存看下一篇文章
2007年8月24日
grub(Grand Unified Boot Loader)启动引导器
与grub相似软件比较
BM:安装多操作系统软件,必须把两个操作系统安装在主分区,硬盘最多可以分4个主分区。
LILO:以前linux系统启动常用是启动程序,缺点是在1024柱以后安装linux就不好用了,1024柱大约是8.4G.
为什么要使用Loader呢?
Windows和Linux的文件格式是不同的,那么计算机在启动的时候是怎么知道装在硬盘里的系统,就由Loader来解决这个问题。
/boot/grub/grub.conf:主文件,改grub配置文件,最好直接改该文件。
grub有两个链接文件:/etc/gurb/grub.conf;/boot/grub/menu.lst
安装grub启动程序
1、#rpm -q grub //查询结果显示当前是否安装了grub
2、#rpm ivh 软件包名 //
3、先进入BIOS设置计算机启动顺序,第一启动设置为CD-ROM(光驱启动),然后保存退出。
4、启动计算机并把Linux光盘插入光驱里。
5、启动光盘后,按F5键(启动)linux rescue(linux拯救模式)
6、#chroot /mnt/sysimage //把当前的根分区挂载到sysimage(进入此目录相当于进入系统根目录)
chroot(插入root):把这个目录指定为根(把根挂载到指的目录)
7、#grub-install /dev/hda
8、#exit //退出系统会自动重启
(还有更多配置信息,点标题进入查看)