搜索
bottom↓
回复: 11

对这段C代码的运行结果感觉很诧异!!内存赋初值问题。

[复制链接]

出0入0汤圆

发表于 2013-1-26 17:59:40 | 显示全部楼层 |阅读模式

  1. unsigned int map_low[4][10];
  2. unsigned int map_high[4][10];


  3. void clean_map()
  4. {
  5.         for(int i=0; i<4; i++)
  6.         {
  7.                 for(int j=0; j<10; j++)
  8.                 {
  9.                         map_low[i][j] =0;
  10.                         map_high[i][j] = 0;
  11.                 }
  12.         }
  13. }


  14. void print_map()
  15. {
  16.         for(int i=0; i<4; i++)
  17.         {
  18.                 for(int j=0; j<10; j++)
  19.                 {
  20.                         mprintf("[%u,%u]\t",map_low[i][j] ,map_high[i][j]);
  21.                 }
  22.                 mprintf("\n");
  23.         }
  24. }

  25. int main()
  26. {
  27.        
  28.         UART_Init(56000);
  29.         board_init();       
  30.         clean_map();
  31.         print_map();
  32.         while(1)
  33.         {
  34.                
  35.                

  36.         }

  37. }       

复制代码
代码就是这样的,那个 mprintf是往串口输出数据的。

结果很诡异!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2013-1-26 18:00:19 | 显示全部楼层
在 LGT上面的, avr-gcc

出0入0汤圆

发表于 2013-1-26 19:45:00 | 显示全部楼层
         

出0入0汤圆

发表于 2013-1-26 20:06:08 | 显示全部楼层
在vc+++6.0上运行没问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-1-26 20:07:28 | 显示全部楼层
我用mingw4.6.1(跟你的avr-gcc同属gcc家族)编译了一下,完全没问题,全是[0,0]。

出0入46汤圆

发表于 2013-1-26 20:09:21 | 显示全部楼层
是不是定义的内存区域超出芯片空间了

出0入0汤圆

发表于 2013-1-26 20:14:57 | 显示全部楼层
kevinstar888 发表于 2013-1-26 20:06
在vc+++6.0上运行没问题

在vc++6上面楼猪的程序是编译不过去的,你是冒充c++才编译过去的,这不科学。
mingw只要加一个参数-std=c99(楼猪的工程也有这个参数),楼猪的程序就可以按c语言编译通过。

出0入0汤圆

 楼主| 发表于 2013-1-26 20:23:48 | 显示全部楼层
i55x 发表于 2013-1-26 20:07
我用mingw4.6.1(跟你的avr-gcc同属gcc家族)编译了一下,完全没问题,全是[0,0]。 ...

问题找到了 ,应该是栈地址不够用了吧 , LGT的内存只有 512B。

出0入0汤圆

 楼主| 发表于 2013-1-26 20:24:47 | 显示全部楼层
i55x 发表于 2013-1-26 20:14
在vc++6上面楼猪的程序是编译不过去的,你是冒充c++才编译过去的,这不科学。
mingw只要加一个参数-std=c ...

我那个就是标准C, 编译没有问题的。

出0入0汤圆

发表于 2013-1-26 20:27:19 | 显示全部楼层
songfei 发表于 2013-1-26 20:24
我那个就是标准C, 编译没有问题的。

我跟你用的都是gcc,只不过你的是生成avr代码,我的mingw是生成windows应用程序的,大部分参数一样。
他用的是visual c++,你的代码是编译不过去的,只能改成.cpp文件来编译,毕竟c和c++语法差异很大,不太能说明问题。

出0入0汤圆

 楼主| 发表于 2013-1-26 20:31:16 | 显示全部楼层
i55x 发表于 2013-1-26 20:27
我跟你用的都是gcc,只不过你的是生成avr代码,我的mingw是生成windows应用程序的,大部分参数一样。
他 ...

gcc是可以编译的,你估计是没包含头文件吧 ,还有 mprintf这个函数是我自己写的,要改成 printf,

main函数里的无关的删掉,就可以啦。

#include <stdio.h>

出0入0汤圆

 楼主| 发表于 2013-1-26 20:32:35 | 显示全部楼层
i55x 发表于 2013-1-26 20:27
我跟你用的都是gcc,只不过你的是生成avr代码,我的mingw是生成windows应用程序的,大部分参数一样。
他 ...


windows程序和单片机程序区别就很大了,这个问题最大的区别是 内存大小。

感谢~!~ 哈哈
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-12 11:04

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表