FlyKu-------------咔咔通

Welcome to my blog. Hope you enjoy your stay here!

纯c语言实现动态分配多维数组的方法

最近在做网格任务调度算法的模拟实验的时候,需要用到比较达到数组,于是就需要学习用动态多维数组来进行内存的分配。

在网上找了些资料,好多是关于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++的动态分配内存看下一篇文章

Fedora 7中自动挂载windows NTFS分区

#su
mkdir /mnt/winC (创建winC目录 )
mkdir /mnt/winD (创建winD目录 )
mkdir /mnt/winE (创建winE目录 )
............(就此类推)


#gedit /etc/fstab (如果没安gedit编辑器,可以自己用root进去改fstab文件)

在最底下加入
/dev/sda1 /mnt/winC ntfs iocharset=utf8,umask=0 0 0
/dev/sda5 /mnt/winC ntfs iocharset=utf8,umask=0 0 0
/dev/sda6 /mnt/winC ntfs iocharset=utf8,umask=0 0 0
.......................保存

(需要注意的是D盘在linux下是sda5,E就是sda6咯,后面类推)
通过fdisk -l 命令查看分区结构,有的分区中sda需要换成hda才行

如果你的分区格式是fat的就把ntfs改为vfat

然后#mount-a即可,当重启后win分区就会出现在桌面上了,名称是在win下的卷标。

fedora 和 windows 一起共存的恶梦~!

=nightmare
大家都知道,linux的fedora core 和windows不兼容问题,一般是先装windows ,再装fedora系列,这样在安装中不会出什么问题,当然如果你是往两块硬盘上安装的话就需要修改 fedora中的grub.conf文件才能正常启动。具体修改我在这里就不说了,需要了解的可以查看这个连接Grub配置详解

我的恶梦不是因为配置grub有问题。在我装了系统xp和win2003后,有一天同学说fedora的界面不错,很好看,正好自己在网格模拟方针中需要用的linux环境,因为当时simgrid还没有推出win32版本,而自己要在simgrid上做网格试验,所以只能装个linux了,于是准备装同学推荐的fedora。经过分区,安装,系统没有任何问题,grub启动也没有问题。首选是fedora,另外选是other,改为windows,为了方面看。然而恶梦就要开始了(点标题进入看更多)

Grub配置详解

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 //退出系统会自动重启
(还有更多配置信息,点标题进入查看)
分页:[<<][1][>>]

日历

<< 2010·1 >>

Sun

Mon

Tue

Wen

Thu

Fri

Sat

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

Powered By Z-Blog 1.6 Final Build 60816

Copyright FlyKu WebSite. Some Rights Reserved.