主题:请教232I问题

  共有41609人关注过本帖    
zjz
1楼


请教232I问题  发帖心情 Post By:2004-6-8 10:59:00   [只看该作者]

最近使用232I开发,今天出现了一个问题,FLASH的空间越来越小,但存在里面的程序还可以用!提示剩余空间是0,请问是不是FLASH坏了!还是别的原因?

  单帖管理 | 引用 | 回复 回到顶部
leeleen
2楼


  发帖心情 Post By:2004-6-8 11:48:00   [只看该作者]

FLASH没有损坏,估计您在开发过程中向FLASH下载了一些文件,有些是可以删除的,您可以用TDRF命令将那些不要的文件删除,将空间释放出来。
:)

  单帖管理 | 引用 | 回复 回到顶部
zjz
3楼


  发帖心情 Post By:2004-6-8 14:55:00   [只看该作者]

我利用TDRF D 命令查看时,已经看不到任何别的文件了,换了个板子,问题依旧!!!

  单帖管理 | 引用 | 回复 回到顶部
zjz
4楼


  发帖心情 Post By:2004-6-8 14:59:00   [只看该作者]

经常出现以下的错误:"Invalid media type writing drive A?"
"erro download"

  单帖管理 | 引用 | 回复 回到顶部
x10
5楼


  发帖心情 Post By:2004-6-8 17:19:00   [只看该作者]

已看了你的代码,是典型的指针操作问题导致系统crush。给你回的email中具体说明了bug所在。请检查你的邮箱,谢谢!

在C语言的函数中,定义的局部变量在放在堆栈之中的,如果局部变量是指针,堆栈中的随机数就变成了该指针所指向的地址,它可以是任意地址,包括系统区域,一旦对该指针进行写操作,系统将被破坏,最后导致系统崩溃。典型的bug:

int func( )
{
   int   i1;
   char* str;

   ....
   i1 = 100;
   sprintf( str, "value=%d\n", i1 );
   ....
   return 0;
}

正确的
int func( )
{
   int   i1;
   char  str[20];

   ....
   i1 = 100;
   sprintf( str, "value=%d\n", i1 );
   ....
   return 0;
}

  单帖管理 | 引用 | 回复 回到顶部
zjz
6楼


  发帖心情 Post By:2004-6-9 18:21:00   [只看该作者]

已收到谢谢!!

  单帖管理 | 引用 | 回复 回到顶部
zjz
7楼


  发帖心情 Post By:2004-6-9 18:26:00   [只看该作者]

int func( )
{
   int   i1;
   char* str;
   str=(char*)malloc(strlen(str));
   ....
   i1 = 100;
   sprintf( str, "value=%d\n", i1 );
   ....
   return 0;
}
改成这样可以吗?

  单帖管理 | 引用 | 回复 回到顶部
zhl
8楼


  发帖心情 Post By:2004-6-9 19:14:00   [只看该作者]

肯定不行,str指针都没有分配,怎么能用strlen(str)。动态分配空间可以用malloc或 new,但需注意的是,在buf使用完后须用free 或delete释放空间。

  单帖管理 | 引用 | 回复 回到顶部
tanzf
9楼


  发帖心情 Post By:2004-6-10 7:15:00   [只看该作者]

无语了。。。

  单帖管理 | 引用 | 回复 回到顶部
x10
10楼


  发帖心情 Post By:2004-6-10 8:24:00   [只看该作者]

在C中,无论是局部变量数组还是对指针的动态分配,都需要指定具体的大小。

  单帖管理 | 引用 | 回复 回到顶部
zjz
11楼


  发帖心情 Post By:2004-6-10 10:41:00   [只看该作者]

谢谢

  单帖管理 | 引用 | 回复 回到顶部

返回首页

请教232I问题

用户名:
            验证码: 验证码,看不清楚?请点击刷新验证码
内容: