动态内存分配得指针

lhj0532 2003-12-25 10:56:29
void multMat(double* l,double* r,int a,int b,int c){//l是一个2维数组(a行b列),r是一个2维数组(b行c列)
double* res=new double(a*c*sizeof(double));//相乘后的矩阵指针
double x=0;
for(int i=0;i<a;i++)
for(int j=0;j<c;j++){
*(res+c*i+j)=0;
for(int k=0;k<b;k++){
*(res+c*i+j)+=(*(l+i*b+k))*(*(r+c*k+j));//此句有问题,如果是(4,2)*(2,4)没问题,如果(4,3)*(3,4)就有问题了,比较奇怪
cout<<(*(l+i*b+k))*(*(r+c*k+j));
cout<<endl;
cout<<"c move "<<c*i+j<<endl;
cout<<"l move "<<i*b+k<<endl;
cout<<"r move "<<c*k+j<<endl;
cout<<endl;
}
cout<<"i="<<i<<"j="<<j<<" "<<*(res+c*i+j)<<endl;
}
}
帮忙看看这是为什么?问题写成注释了。多谢!!!
...全文
30 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
arfi 2003-12-25
  • 打赏
  • 举报
回复

double* res=new double(a*c*sizeof(double));
改成
double* res=new double[a*c*sizeof(double)];

小心你其他的l,r是不是也有这种问题
lhj0532 2003-12-25
  • 打赏
  • 举报
回复
哦,原来如此,多谢!!!
arfi 2003-12-25
  • 打赏
  • 举报
回复
char *p;

p = new char(10); //申请一个char大小的空间,并将其初始化为10

p = new char[10]; //初始化10个char大小的空间
lhj0532 2003-12-25
  • 打赏
  • 举报
回复
多谢这位大哥,那为什么把小括号变成大括号就一切都ok了?什么原因?

64,645

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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