能力值:
( LV12,RANK:290 )
2 楼
内存申请的不对
能力值:
(RANK:170 )
3 楼
我的两个XP sp2出错的图片如下
我顺便问一下,问什么同样是xp sp2,出错的图片显示不一样,
一个有调试,一个没有,这是什么原因阿,有什么区别吗?
能力值:
(RANK:170 )
4 楼
最初由 WAKU 发布 内存申请的不对
我申请的是边长*边长*4阿,然后转换为int**,我还是不知道错在什么地方
求教ing...
能力值:
( LV2,RANK:10 )
5 楼
最初由 Aker 发布 我的两个XP sp2出错的图片如下 我顺便问一下,问什么同样是xp sp2,出错的图片显示不一样, 一个有调试,一个没有,这是什么原因阿,有什么区别吗?
一个系统打开了错误报告功能,另一个系统关闭了错误报告功能
能力值:
( LV12,RANK:290 )
6 楼
这么申请还是一维数组
还是用i*len+j形式引用比较好
能力值:
(RANK:170 )
7 楼
最初由 enbrow 发布 一个系统打开了错误报告功能,另一个系统关闭了错误报告功能
谢谢####@@@#####
呵呵呵
能力值:
(RANK:170 )
8 楼
最初由 WAKU 发布 这么申请还是一维数组 还是用i*len+j形式引用比较好
那请问一下c中要是想分配
可变二维数组该怎么做呢,谢谢・・・
我在网上找了一段动态分配二维数组代码,
原来的地址是
http://club.yesky.com/archiver/?tid-292566.html
里面注释是我加的,稍微整理个以下,但是看不懂,那位大虾指教阿
========2004-4-9 18:09:14网络文盲
http://club.yesky.com/archiver/?tid-292566.html
char **s;
int i,j,row,col;
printf("please input rows:");
scanf("%d",&row);
printf("\nplease input col:");
scanf("%d",&col);
// 分配 (行个数*字符指针长度) 个字节
if((s=malloc(sizeof(char*)*row))==0)
{
printf("allocatesmainmemoryerr!");
return1;
}
// s[i]为字符指针,看不懂,
for(i=0;i<row;i++)
if((s[i]>=malloc(sizeof(char)*col))==0)
{
printf("allocatesmainmemoryerr!");
return1;
}
能力值:
(RANK:1010 )
9 楼
(int**)malloc(Len*Len*sizeof(int));
分配连续的存储空间,长度为Len*Len*sizeof(int)
(int**)从意思上来说是为了转化为二维数组索引形式
由于VC中二维数组是以“行”优先,所以在对
二维数组进行索引的时候,例如A[i][j] ;
实际上就是引用第 ( i * RowNum + j )个空间
但是(int**)并没有指定二维数组中每个的数目
所以当执行你所指的第二行的时候,会因为无法确定RowNum而无法定位存储单元,导致出错
能力值:
(RANK:170 )
10 楼
最初由 北极星2003 发布 (int**)malloc(Len*Len*sizeof(int)); 分配连续的存储空间,长度为Len*Len*sizeof(int) (int**)从意思上来说是为了转化为二维数组索引形式 由于VC中二维数组是以“行”优先,所以在对 ........
收到,呵呵,
是不是说c里面就不可以定义变长的2维数组呢
能力值:
( LV12,RANK:660 )
11 楼
最初由 Aker 发布 收到,呵呵, 是不是说c里面就不可以定义变长的2维数组呢
当然可以。先分配一组单位个数为i的内存,再分配i组大小为j的内存,该i组内存地址存储于第一组内存中,如图:
能力值:
(RANK:170 )
12 楼
最初由 prince 发布 当然可以。先分配一组单位个数为i的内存,再分配i组大小为j的内存,该i组内存地址存储于第一组内存中,如图:
谢谢大家热心帮忙,我的实现代码如下
参考了网络文盲的代码,http://club.yesky.com/archiver/?tid-292566.html
谢谢,prince的提示
Type 自己定义
如:
#define Type int
#define DEBUG 1
#ifdef DEBUG
#define DebugPrint(arg) printf(arg)
#else
#define DebugPrint(arg)
#endif
/*
功能: 动态分配Maze[row][col]
返回值: 二维数组地址,分配失败为空
*/
Type ** AllocateMatt(int row, int col)
{
int i,j;
Type **Maze;
// 分配一组单位个数为row的内存
if((Maze=(Type **)malloc(sizeof(Type*)*row))==0)
{
DebugPrint("allocate row index err!");
return NULL;
}
DebugPrint("allocate %d bytes for row\n",sizeof(Type*)*row);
// 分配row组大小为col的内存
for(i=0;i<row;i++)
if((Maze[i]=(Type*)malloc(sizeof(Type)*col))==0)
{
DebugPrint("allocate row block err!");
return NULL;
}
DebugPrint("allocate %d bytes per row\n",sizeof(Type)*col);
return Maze;
}
另外,DebugPrint 好像带参数就会提示宏的实参太多,同时输出不对,呵呵
顺便问一下,c语言也是这样实现的吗?