求大神帮忙:0x00000000 处有未经处理的异常: 0xC0000005: 在位置 0x0000000000000000 发生访问冲突

huangxqueen 2013-09-24 09:54:41
程序的 编译没有问题。。但是 出错误。。



环境 是 win8 64bit 系统。。。

程序调用了 zgemm 这个函数。。是 intel mkl 里面的函数。。实现矩阵相乘
https://publib.boulder.ibm.com/infocenter/clresctr/vxrx/index.jsp?topic=%2Fcom.ibm.cluster.essl.v5r2.essl100.doc%2Fam5gr_hsgemm.htm

输入的参数都是由主函数传过来的。。已经 通过 new 这种方式定义过了的。。
void MatMultiply( MKL_Complex16* C, MKL_Complex16* opA, MKL_Complex16* opB, __int64 *a, __int64 *b, __int64* c,
MKL_Complex16* alpha/*=NULL*/, MKL_Complex16* beta/*=NULL*/ )
{
//C := alpha*op(A)*op(B) + beta*C,
// op(A) size(l*m) op(B)size(m*n) C size(l*n)
// a =l b =m c=n
MKL_Complex16 cAlpha = {1,0}, cBeta = {0,0};
if(!alpha){
alpha = &cAlpha;
}
if(!beta){
beta = &cBeta;
}
zgemm("n","n",a,c,b,alpha,opA,a,opB,b,beta,C,a); // 就这一句 有问题!!!!!!
//zgemm("n","n",c,a,b,alpha,opB,c,opA,b,beta,C,c);
}


然后反汇编就弹出来一堆:
0000000000000000 ?? ???
0000000000000001 ?? ???
0000000000000002 ?? ???
0000000000000003 ?? ???
0000000000000004 ?? ???
0000000000000005 ?? ???
0000000000000006 ?? ???
0000000000000007 ?? ???
0000000000000008 ?? ???
0000000000000009 ?? ???
000000000000000A ?? ???
000000000000000B ?? ???
000000000000000C ?? ???
000000000000000D ?? ???
000000000000000E ?? ???
000000000000000F ?? ???
0000000000000010 ?? ???
0000000000000011 ?? ???
0000000000000012 ?? ???
0000000000000013 ?? ???
0000000000000014 ?? ???
0000000000000015 ?? ???
0000000000000016 ?? ???
0000000000000017 ?? ???
0000000000000018 ?? ???
0000000000000019 ?? ???


求问题原因?!!!没有找到空指针项。。。
或者怎么看是不是空指针??
...全文
2615 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
modyaj 2013-09-25
  • 打赏
  • 举报
回复
引用 5 楼 huangxqueen 的回复:
[quote=引用 1 楼 modyaj 的回复:] 第一想到的就是空指针 既然没有空指针 既然没有空指针 那看看每个参数指向的空间是不是足够使用啊 这么看 着实看不出啥来。。。
谢谢! 想请问一下 怎么看 参数的指向空间呢? 因为 zgemm 函数要求 输入的 参数 是 const long long 形式的。。跟64 位 这个 有关系么? 在网上 搜的时候 都只有 “在位置0x00000000” 而我这里 是“0x0000000000000000” 是不是跟这个有关系? 真心谢谢了!望指教!![/quote] 这个还得你自己看看你的数组边界 保证函数调用写入数据的时候 确实存在内存
向立天 2013-09-25
  • 打赏
  • 举报
回复
引用 10 楼 huangxqueen 的回复:
[quote=引用 8 楼 xianglitian 的回复:] 这种问题自己单步调试检查一下数据变化
因为 那个 函数 zgemm 是封装在 库里面的。。所以没有办法 到内部去一步一步的 调试。。 还是说 在这一步之前看那些 数据? 看数据的话 如何判断出错误 呢? 真心谢谢!![/quote]你这个显然是指针异常 成熟库函数理论上是不会出现问题的 所以肯定是你代码的问题 看指针分配和数组边界的位置
zhuben775 2013-09-25
  • 打赏
  • 举报
回复
你如果确定是调用库函数那一行出错,就看下你给库函数传参是否有错,再看看这个函数是否需要初始化等操作
huangxqueen 2013-09-25
  • 打赏
  • 举报
回复
引用 8 楼 xianglitian 的回复:
这种问题自己单步调试检查一下数据变化
因为 那个 函数 zgemm 是封装在 库里面的。。所以没有办法 到内部去一步一步的 调试。。 还是说 在这一步之前看那些 数据? 看数据的话 如何判断出错误 呢? 真心谢谢!!
huangxqueen 2013-09-25
  • 打赏
  • 举报
回复
引用 4 楼 oyljerry 的回复:
看上去还是指针或者数组越界,检查一下参数等是否符合要求
参数 如果不符合要求貌似在编译的时候 就指出来了。。还因为这个改了好久。。但是编译通过的 时候有警告 说 __int64 改成 int 时 可能会数据丢失。。但是 由于 __int64 定义的都是 每一维的大小。。最大 512.。所以 就没管。。想问一下 数组越界 是什么意思? 该怎么检查 或者操作呢? 谢谢!!望指教!!
向立天 2013-09-25
  • 打赏
  • 举报
回复
这种问题自己单步调试检查一下数据变化
huangxqueen 2013-09-25
  • 打赏
  • 举报
回复
引用 3 楼 hdt 的回复:
它的matrix是用什么形式写的,怎么也感觉不能用一维数组表示
matrix 这个比较 奇葩。。是 intel mkl 这个库 里面定义的。。叫做 MKL_Complex16 定义的时候 是: MKL_Complex16 *A=new MKL_Complex16 [kk*ss*ii*jj]; 应该是一维的数组吧。。。就是把几维的全部大小乘积 作为整个的大小 原来 用的是32位 的intel 的库 编译是通过的。。里面的额参数 是 const int 但是 由于数据太大 换到 64位系统编译 然后用的是 64位的库。。结果就编译不通过。。
huangxqueen 2013-09-25
  • 打赏
  • 举报
回复
引用 2 楼 healer_kx 的回复:
嗯~。就是代码处理指针不对。
谢谢 回答! 还想请问一下 具体是指针的 什么原因 或者 有可能是哪方面不对呢? 望指教!谢谢!
huangxqueen 2013-09-25
  • 打赏
  • 举报
回复
引用 1 楼 modyaj 的回复:
第一想到的就是空指针 既然没有空指针 既然没有空指针 那看看每个参数指向的空间是不是足够使用啊 这么看 着实看不出啥来。。。
谢谢! 想请问一下 怎么看 参数的指向空间呢? 因为 zgemm 函数要求 输入的 参数 是 const long long 形式的。。跟64 位 这个 有关系么? 在网上 搜的时候 都只有 “在位置0x00000000” 而我这里 是“0x0000000000000000” 是不是跟这个有关系? 真心谢谢了!望指教!!
oyljerry 2013-09-24
  • 打赏
  • 举报
回复
看上去还是指针或者数组越界,检查一下参数等是否符合要求
真相重于对错 2013-09-24
  • 打赏
  • 举报
回复
它的matrix是用什么形式写的,怎么也感觉不能用一维数组表示
healer_kx 2013-09-24
  • 打赏
  • 举报
回复
嗯~。就是代码处理指针不对。
modyaj 2013-09-24
  • 打赏
  • 举报
回复
第一想到的就是空指针 既然没有空指针 既然没有空指针 那看看每个参数指向的空间是不是足够使用啊 这么看 着实看不出啥来。。。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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