内存分配的问题

fwinfwin 2003-10-16 09:00:15
一段代码有这句什么意思?

double**Val1=new double*[row];

运行下面的代码出错,
这个是一个矩阵运算的程序,这里分配内存,别人写的,很滥!
整个代码如下:
realloc(unsigned int row, unsigned int col)
{
if(row==RowSize&&col==ColSize)
{
Row=RowSize;
Col=ColSize;
return;
}
double**Val1=new double*[row];
for(unsigned int i=0;i<row;i++)
{
Val1[i]=new double[col];
}
unsigned int ColSize=min(Col,col)*sizeof(double);
unsigned int minRow=min(Row,row);
for(i=0;i<minRow;i++)
{
memcpy(Val1[i],Val[i],ColSize);//到这句出错了!
}
for(i=0;i<RowSize;i++)
{
delete[] Val[i];
}
delete[]Val;
RowSize=Row=row;
ColSize=Col=col;
Val=Val1;
return;

}
...全文
34 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zoohoo 2003-10-17
  • 打赏
  • 举报
回复
这是标准的c的写法,很正常。
例如:
typedef double* DOUBLE
DOUBLE *a = new DOUBLE[10];
实际上是10个元素的数组,每个元素都是double*的类型
jhyu 2003-10-17
  • 打赏
  • 举报
回复
'='右边的意思是:分配row个内存单位,每个内存单位的类型是double*;
'='左边的Vall是一个指向指针的指针,仅此而已,这样可以更直观方便的访问各个double*的值
tuxw 2003-10-16
  • 打赏
  • 举报
回复
double**Val1=new double*[row];

相当于一个长row的数组, 其中每个成员都是 double 指针

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧