报错c6385,读取数据无效


int a【N】={12345678};
…
fun(a【N】,N,m ,k);

调用函数处报错c6385,求赐教

改为fun(a,N,m,k);
第一个参数因该是数组,要传递a,不是a[N]

  • 这篇博客: 关于C6385读取的数据无效&C6386缓冲区溢出报错中的 C6385 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 查阅相关资料,首先怀疑的是strcpy在读取时超出了函数容量,导致内存溢出。(strcpy函数处理溢出的建议)如果是strcpy原因,则应该使用memcpy,确定读取字符的数量。

    但测试后,确定不是strcpy原因,后又怀疑是BC开辟空间为0,不能写入,于是加入BC 指针判断,为NULL和指向空间为0时报错,但确定不是这个原因。

    由于需要在给BC赋值时添加数组下标,确定数组位置。恰逢VS报错时提示空间为0,便将指针修改为0,再次运行,问题解决。

  • 您还可以看一下 李述铜老师的自己动手从0到1写嵌入式操作系统课程中的 C6.03 计数信号量的删除与状态查询小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    c6385错误通常是由于内存读取问题引起的。解决方法包括以下几步:

    1.检查代码中是否有未初始化的变量,特别是指针。如果有,请确保在使用前初始化。

    2.运行代码时,检查是否有内存泄漏或者越界访问的问题。使用内存泄漏检测工具或者动态检查工具来帮助解决此类问题。

    3.检查是否有参数传递错误,比如类型不匹配或者参数过多或过少等。

    4.检查程序中是否有死循环或者无限递归等问题,这些问题可能导致内存溢出或者运行时错误。

    具体方法可根据上述几点进行排查和解决。