• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

51单片机内存问题

大老爷们儿 2018-06-07 浏览量:946
最近遇到一个奇葩问题,用的51单片机,移植的程序,在主函数的while的循环里面调用了一个函数,当我把函数屏蔽以后编译报错,说我程序占用内存过大,无法编译通过,但是调用那个函数以后程序编译就能通过,而且看提示,调用函数占用的字节比不调用多占用了几十字节,但是特么不调用就是内存出错,感觉很奇怪
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 可以把这个函数的内容发一下么,这是个什么函数,功能是什么。

    从你的描述来看,应该是这个函数使能了外部存储,或是把一些变量的地址指定到了外部

    • 发布于 2018-06-08
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:16
  • 51的话,要把没有调用的函数删除掉,否则函数里面的局部变量会全部按照全局变量分配内存。
    • 发布于2018-06-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 编译错误信息贴出来看看,没有报错信息不好判断原因
    • 发布于2018-06-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 真是超出了我的认知。

    正常来说,只要函数不调用的话,函数里的变量不会分对内存造成读写。

    • 发布于2018-06-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 建议贴出完整的代码,这样大家才好帮你分析,不过根据你的描述一个这个函数中调用了一个大内存的数据
    • 发布于2018-06-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 把函数发上来看看 ,还有这么神奇的函数么?

    估计函数是初始化了什么外部 的外设

    • 发布于2018-06-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 这种看起来想是调用的函数里面有野指针导致内存溢出
    • 发布于2018-06-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 是不是子函数有定义全局变量,子函数注释了,其他地方使用的话会提示没定义,编译报错。
    • 发布于2018-06-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 应该是定义到 data区了 注释后 是默认 所以占用会不同
    • 发布于2018-06-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 感觉你应该搞错了编译后的提示信息吧,一般不会这样的。注释了以后会提示警告,警告你的程序没有使用这个函数,但是不会报错。
    • 发布于2018-06-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 关于这种问题,建议楼主最好能发代码发上来,或者上传一下错误提示的图片,否则不也不给你分析……
    • 发布于2018-06-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 好奇怪的问题啊。

    一个函数的影响这么大么,最好是上传一下错误的信息来分析一下,以及函数的源代码

    • 发布于2018-06-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 你的这个函数一定是初始化了什么外设的存储器了,才会报不足
    • 发布于2018-06-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以吧代码贴出来大家一起分析,可能是初始化了什么外设吧,
    • 发布于2018-06-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 有可能是访问内存越界,那个地址已经超出内部内存了。

    • 发布于2018-06-30
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

51单片机内存问题